通过viewpaper的 onPageScrollStateChanged 可以知道当前的滑动状态是正在滑动还是已经滑动完成,但是当viewpaper在首页时继续向左滑动,这个监听还是会存在,如果在这个滑动状态为0就是停止滑动的时候刷新界面,那么如果当前也在第一页时继续向左滑动也会刷新界面,这就很没必要,想请教一下这个问题如何避免呢?
今天在做项目的时候,由于要处理viewPager页面滑动的事件,所以对其进行了一个小小的研究:
首先ViewPager在处理滑动事件的时候要用到OnPageChangeListener
OnPageChangeListener这个接口需要实现三个方法:(onPageScrollStateChanged,onPageScrolled ,onPageSelected)
onPageScrollStateChanged(int arg0) ,此方法是在状态改变的时候调用,其中arg0这个参数
有三种状态(0,1,2)。arg0 ==1的时辰默示正在滑动,arg0==2的时辰默示滑动完毕了,arg0==0的时辰默示什么都没做。
当页面开始滑动的时候,三种状态的变化顺序为(1,2,0),演示如下:
当viewPager状态改变时候的代码块:
https://img-my.csdn.net/uploads/201304/16/1366083605_9502.png
打印结果:
https://img-my.csdn.net/uploads/201304/16/1366083785_1088.png
onPageScrolled(int arg0,float arg1,int arg2) ,当页面在滑动的时候会调用此方法,在滑动被停止之前,此方法回一直得到
调用。其中三个参数的含义分别为:
arg0 :当前页面,及你点击滑动的页面
arg1:当前页面偏移的百分比
arg2:当前页面偏移的像素位置
(参见官网:http://docs.eoeandroid.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html#onPageScrolled(int, float, int))
演示如下:
页面滚动时侯代码:
https://img-my.csdn.net/uploads/201304/16/1366084226_5095.png
日志打印:
https://img-my.csdn.net/uploads/201304/16/1366084267_6134.png
onPageSelected(int arg0) : 此方法是页面跳转完后得到调用,arg0是你当前选中的页面的Position(位置编号)
可以获取当前所在页:
currentItem = viewPager.getCurrentItem();
在您刷新界面的代码中判断currentItem是否为0,如果为0,说明为首页,不往下执行。如果不为0,则执行刷新界面。
可以用setOnTabSelectedListener监听,通过onTabSelected()方法和onTabUnselected()方法结合判断是否在第一页向左滑