您的位置:首页 > 其它

viewpager.addOnPageChangeListener三个重写方法参数分析

2017-04-13 14:31 537 查看
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.**
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: