viewpager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
System.out.println("onpageselect = " + arg0);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
System.out.println("onPageScrolled = " + arg0 + ", " + arg1 + ", " + arg2);
}
@Override
public void onPageScrollStateChanged(int arg0) {
System.out.println("onPageScrollStateChanged = " + arg0);
}
});
大概先解释一下上面几个函数中各个参数的含义:
1.onPageSelected(int arg0) 指的是当前选择的是哪个页面
2. onPageScrolled(int arg0, float arg1, int arg2) arg0表示目标,arg1表示偏移的百分比,arg2表示偏移的像素
3. onPageScrollStateChanged(int arg0) 表示当前滑动的状态,只有三个状态0, 1, 2,下面我们结合打印的日志来具体看看他们的含义
其实到这里,大概的含义就清楚了。
onPageScrollStateChanged 为1的时候表示开始滑动,为2的时候表示手指松开了页面自动滑动,为0的时候表示停止在某页
而且只要有onPageScrollStateChanged == 2 才有可能触发onPageSelected,向右滑动为当前页面+1,向左滑动为当前页面-1
但是这个好记,就是当前页跳转后的页面,如果和当前页一样,就不会调用。
onPageScrolled向右滑动,第一个参数表示的是当前的页面,向左滑动表示的是上一个页面的标号,后面2个参数看了日志其实很好理解。