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.**

你可能感兴趣的:(android)