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

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.**
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值