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

              

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:paddingLeft="@dimen/activity_horizontal_margin"  
  6.     android:paddingRight="@dimen/activity_horizontal_margin"  
  7.     android:paddingTop="@dimen/activity_vertical_margin"  
  8.     android:paddingBottom="@dimen/activity_vertical_margin"  
  9.     tools:context=".MyActivity">  
  10.   
  11.    <android.support.v4.view.ViewPager  
  12.        android:id="@+id/mViewPager"  
  13.        android:layout_width="match_parent"  
  14.        android:layout_height="match_parent"  
  15.        >  
  16.    </android.support.v4.view.ViewPager>  
  17.   
  18.   
  19.   
  20. </RelativeLayout>  

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

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1.     public static class TabAdapter extends FragmentPagerAdapter implements ViewPager.OnPageChangeListener {  
  2.   
  3.   
  4.   
  5.   
  6.         private   ArrayList<Fragment> frg = new ArrayList<Fragment>();  
  7.   
  8.   
  9.         public TabAdapter(FragmentManager fm) {  
  10.             super(fm);  
  11.   
  12.             CountingFragment f1 = new CountingFragment();  
  13.             frg.add(f1);  
  14.   
  15.             CursorFragment   f2 = new CursorFragment();  
  16.   
  17.             frg.add(f2);  
  18.             FragmentPagerSupport f3 = new FragmentPagerSupport();  
  19.   
  20.             frg.add(f3);  
  21.             notifyDataSetChanged();  
  22.         }  
  23.   
  24.         @Override  
  25.         public Fragment getItem(int i) {  
  26.   
  27.             return frg.get(i);  
  28.         }  
  29.   
  30.         @Override  
  31.         public int getCount() {  
  32.             return frg.size();  
  33.         }  
  34.   
  35.         @Override  
  36.         public void onPageScrolled(int i, float v, int i2) {  
  37.   
  38.         }  
  39.   
  40.         @Override  
  41.         public void onPageSelected(int i) {  
  42.   
  43.         }  
  44.   
  45.         @Override  
  46.         public void onPageScrollStateChanged(int i) {  
  47.   
  48.         }  
  49.   
  50.     }  
  51.   
  52. }  
为了监听ViewPager 移动变化的事件,我们实现了ViewPager.OnPageChangeListener ,它的实现三个函数看名字就知道什么意思了。getCount 返回ViewPager 的Fragment的数量,getItem 返回每个位置的Item。


3) 关联ViewPgaer跟Adapter

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. mViewPager = (ViewPager)findViewById(R.id.mViewPager);  
  2.   
  3. mTabAdapter = new TabAdapter(getSupportFragmentManager());  
  4.   
  5. 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.

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. @Override    
  2.     public boolean canScrollHorizontally(int direction) {    
  3.         // TODO Auto-generated method stub    
  4.         return false;    
  5.     }   


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值