viewpager+fragment很轻松就可以搞定多页面间切换,当然在页面切换的同时我们可能会需要对viewpager进行监听,进行滑动页面后的操作,例如导航线随页面同时滑动等等。
在给viewpager加监听器的时候,发现setOnPageChangeListener已经过期了,查源码才知被addOnPageChangeListener替代了…
下面开始对viewpager.addOnPageChangeListener三个重写方法参数分析:
一、 onPageScrolled
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
KLog.i("onPageScrolled:" + position + "===" + positionOffset + "===" + positionOffsetPixels);
}
1、通过打印日志发现当页面刚打开的时候就会执行这个方法,日志输出为:
onPageScrolled:0===0.0===0
2、滑动屏幕到第二页,发现在滑动过程中该方法会被多次调用,日志输出为:
onPageScrolled:0===0.0037037036===4
onPageScrolled:0===0.0129629625===13
onPageScrolled:0===0.021296296===23
onPageScrolled:0===0.030555556===33
...
onPageScrolled:0===0.9962963===1076
onPageScrolled:0===0.99722224===1077
onPageScrolled:0===0.99814814===1078
onPageScrolled:0===0.9990741===1079
onPageScrolled:1===0.0===0
结论:
**position-点击滑动的界面位置(viewpager界面排序为0.1.2.3....)
positionOffset-滑动的页面占整个屏幕的百分比
positionOffsetPixels-屏幕像素位置**
二、onPageSelected
@Override
public void onPageSelected(int position) {
Klog.i("onPageSelected:"+position);
}
打印日志发现,每当页面跳转完成后就会执行这个方法,方法参数:
**position---跳转完成后的页面位置(viewpager界面排序为0.1.2.3....)**
三、onPageScrollStateChanged
@Override
public void onPageScrollStateChanged(int state) {
Klog.i("onPageScrollStateChanged:"+state);
}
日志输出:
onPageScrollStateChanged:1
onPageScrollStateChanged:2
onPageScrollStateChanged:0
结论:
**当页面停止的时候该参数为0,页面开始滑动的时候变成了1,当手指从屏幕上抬起变为了2(无论页面是否从1跳到了2),当页面静止后又变成了0.**