ViewPager.OnPageChangeListener
2021-01-18 本文已影响0人
陈萍儿Candy
1.onPageScrolled,调用多次,pos从当前页面的pos开始变化
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
// 先走onPageSelected方法,再走这个方法
// postion:如果是左滑动pos从0到1, 当前页面的pos,手指触碰的当前页面的pos,调用很多次,最后一次是滑动后的页面的pos,positionOffset:0.0,positionOffsetPixels0
// position 如果是右滑pos从1到0,pos是selectedPos,
// positionOffset 当前页面偏移的百分比 左滑从pos为0到1,递增,反之,递减,变化范围0-1
// positionOffsetPixels 当前页面偏移的像素数,变化氛围0-手机宽的像素数,
// positionOffsetPixels:如果是左滑从pos为0滑动到pos为1,positionOffsetPixels变化趋势是递增,反过来,递减
Log.i(TAG, "onPageScrolled: "+ position +",positionOffset:"+positionOffset+",positionOffsetPixels"+positionOffsetPixels);
}
2.onPageSelected,当前选中的页面的pos,只调用一次
@Override
public void onPageSelected(int position) {
// 只调用一次,滑动完,你当前选中的页面pos 一般在state为2后,开始走此方法
Log.i(TAG, "onPageSelected: "+position);
}
3.onPageScrollStateChanged,状态的改变
@Override
public void onPageScrollStateChanged(int state) {
// 状态发生改变时调用,一次一面切换需要经历状态过程为,1:用户拖拽-->2:用户手指抬起-->ViewPager.SCROLL_STATE_IDLE:0:滑动动画做完
// 如果是用户滑动引起的页面的滑动,状态会有1,如果是点击tablayout的标签,引起的页面的滑动,没有状态1,是2--->0
Log.i(TAG, "onPageScrollStateChanged: "+state);
}