您的位置:首页 > 移动开发 > Android开发

Android ViewPager 应用及技巧

2014-10-17 09:53 337 查看
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,代码如下

              

[html] view
plaincopy





<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),代码如下

[html] view
plaincopy





    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

[html] view
plaincopy





mViewPager = (ViewPager)findViewById(R.id.mViewPager);  

  

mTabAdapter = new TabAdapter(getSupportFragmentManager());  

  

mViewPager.setAdapter(mTabAdapter);  

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

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

一些属性的介绍

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

booleancanScrollHorizontally(int
direction)Check if this view can be scrolled horizontally in a certain direction.
[java] view
plaincopy





@Override    

    public boolean canScrollHorizontally(int direction) {    

        // TODO Auto-generated method stub    

        return false;    

    }   

原文:http://blog.csdn.net/barryclass/article/details/40144337
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: