有关ViewPager这个控件呢。呐,ViewPager是一个允许使用者左右滑动数据页面的布局管理器,我们可以通过适配器(pagerAdapter)来管理要显示的页面,PagerAdapter是用于"将多个页面填充到ViewPager"的适配器的一个基类,大多数情况下呢,我们更倾向于自定义一个继承了PagerAdapter并且相对具体一些的一个适配器来使用。
在继承PagerAdapter基类之后,需要重写四个方法
1.instantiateitem(ViewGroup,int);
instantiateItem(ViewGroup, int) // 当要显示的图片可以进行缓存的时候,会调用这个方法进行显示图片的初始化,我们将要显示的ImageView加入到ViewGroup中,然后作为返回值返回即可
2.detroyitem(VeiwGroup,object,int);
destroyItem(ViewGroup, int, Object) // PagerAdapter只缓存三张要显示的图片,如果滑动的图片超出了缓存的范围,就会调用这个方法,将图片销毁
3.getCount();
getCount() // 获取要滑动的控件的数量
4.isViewFromObject(View,Object);
isViewFromObject(View, Object) // 来判断显示的是否是同一张图片,这里我们将两个参数相比较返回即可
其中后两个方法是在继承之后自动重写,然而前两个方法则需要在进行该操作时手动重写。
ViewPager不直接处理每一个视图而是将各个视图与一个键相联系起来,这个键呢,是我们常见的一个东西,如图所示:
就是上图中黑色箭头标记出来的小圆点,它就是这个键了,其中isViewFromObject(View,Object)方法就是代表着当前页面是否与给定的键相关联的一个方法,如果相关联,就代表对应的是同一个View返回true,否则返回false。
ViewPager在处理滑动事件的时候需要实现OnPageChangerListener接口,实现这个接口我们也需要重写三个方法
onpageScrollStateChanged
onpageScrolled
onpageSelected
其中onpageScrollStateChanged(int arg0)方法是在状态改变的时候使用,它的参数arg0有三种状态(0,1,2)。当arg==1时代表正在滑动,arg==2是代表滑动结束,arg==0代表什么都没做。当我们的页面开始滑动时,三种状态的变化顺序为(1,2,0)。
onpageScrolled(nt arg0,float arg1,int arg2)方法是在当页面滑动的时候才会调用此方法,在滑动停止前,此方法会被一直调用,其中的三个参数分别代表:
arg0:当前页面,及你点击滑动的页面;
arg1:当前页面偏移的百分比;
arg2:当前页面偏移的像素位置
最后,onpageSelected(int arg0)方法是在页面跳转完之后得到调用,arg0是你当前选中的页面的position(位置编号)。
在大部分时候,项目中的ViewPager会和Fragment同时出现,每一个ViewPager的页面就是一个Fragment(微信主页)�Android提供了一些专门的适配器来让ViewPager与Fragment一起工作,也就是FragmentPagerAdapter与FragmentStatePagerAdapter。
FragmentPagerAdapter继承自PagerAdapter,主要用来展示多个Fragment页面,并且每一个Fragment都会被保存在fragmentmanager中。