• Android ViewPager 应该及技巧


    1.   android 中的ViewPager 功能类似于iOS中的scrollView,实现最主要的页面的左右滑动功能。该类存在于Google的兼容包里面,所以在引用时记得在BuilldPath中增加“android-support-v4.jar”

    2.  在实现中ViewPager须要绑定一个适配器(Adapter)。在适配器中返回页面view的个数及详细的形式。这个就类似于iOS中tableView的实现,必须实现UITableView代理中的 numberOfCell 跟CellForRow,一个用于返回共同拥有多少数据,还有一个用于返回每一条详细的数据。

    3. ViewPager 通常与Fragment一起使用。

    在ViewPager中增加多fragment(页面) 来实现左右的滑动。

    4.看个最简单的ViewPager的代码:   如果我们如今已经有三个Fragment ,他们的背影颜色分别为red,green, blue。


       1) 我们在xml 文件里加入一个ViewPager,代码例如以下

                  

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin"
        tools:context=".MyActivity">
    
       <android.support.v4.view.ViewPager
           android:id="@+id/mViewPager"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           >
       </android.support.v4.view.ViewPager>
    
    
    
    </RelativeLayout>

    2)在activtiy .java中使用此ViewPager.如今我们有了ViewPager了,还须要一个Adapter,通常我们继承FragmentPagerAdapter来自己定义我们的Adapter以便重写返回个数及Item的函数。在Adaoter 中定义一个数组,里面添加上面的Fragment(假设想动态添加留个添加的接口就ok),代码例如以下

        public static class TabAdapter extends FragmentPagerAdapter implements ViewPager.OnPageChangeListener {
    
    
    
    
            private   ArrayList<Fragment> frg = new ArrayList<Fragment>();
    
    
            public TabAdapter(FragmentManager fm) {
                super(fm);
    
                CountingFragment f1 = new CountingFragment();
                frg.add(f1);
    
                CursorFragment   f2 = new CursorFragment();
    
                frg.add(f2);
                FragmentPagerSupport f3 = new FragmentPagerSupport();
    
                frg.add(f3);
                notifyDataSetChanged();
            }
    
            @Override
            public Fragment getItem(int i) {
    
                return frg.get(i);
            }
    
            @Override
            public int getCount() {
                return frg.size();
            }
    
            @Override
            public void onPageScrolled(int i, float v, int i2) {
    
            }
    
            @Override
            public void onPageSelected(int i) {
    
            }
    
            @Override
            public void onPageScrollStateChanged(int i) {
    
            }
    
        }
    
    }
    为了监听ViewPager 移动变化的事件。我们实现了ViewPager.OnPageChangeListener 。它的实现三个函数看名字就知道什么意思了。

    getCount 返回ViewPager 的Fragment的数量。getItem 返回每一个位置的Item。


    3) 关联ViewPgaer跟Adapter

            mViewPager = (ViewPager)findViewById(R.id.mViewPager);
    
            mTabAdapter = new TabAdapter(getSupportFragmentManager());
    
            mViewPager.setAdapter(mTabAdapter);

    getSupportFragmentManager 返回一个Fragment的管理器,是FragmentPagerAdapter的要求參数。

    经过上面的步骤我们就实现了一个简单的能够左右滑动的ViewPager。


    一些属性的介绍


    • 当我们有须要用按键去控制ViewPager的左右滑动时。使用属性 
      boolean arrowScroll(int direction)        向前翻页參数传1,向后翻页參数传2
    •      让ViewPager不响应滑动的切换事件。如让嵌套的子ViewPager不响应滑动切换事件,仅仅是响应点击切换事件,将滑动事件交给父ViewPager处理。,使用 

    boolean canScrollHorizontally(int direction)
    Check if this view can be scrolled horizontally in a certain direction.

    @Override  
        public boolean canScrollHorizontally(int direction) {  
            // TODO Auto-generated method stub  
            return false;  
        }  






  • 相关阅读:
    Spring+mybatis+PageHelper
    查看mysql执行时间
    Spring AMQP
    HMAC的JAVA实现和应用
    StringRedisTemplate常用操作
    iOS linker command failed with exit code 1 (use -v to see invocation)多种解决方案汇总
    Swift 导航栏设置图片点击事件,图片蓝色的解决方案
    iOS 设备的CPU架构以及查看framework支持架构
    iOS获取用户设备崩溃日志并分析
    Swift3 URL编码、解码用法addingPercentEncoding
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5369858.html
Copyright © 2020-2023  润新知