您的位置:首页 > 其它

ViewPager的onPageChangeListener三个方法的执行顺序及细节

2016-11-29 14:34 429 查看
1,ViewPager的onPageChangeListener有三个方法分别是
onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
onPageSelected(int position)
onPageScrollStateChanged(int state)
2,当ViewPager页面可见时,执行
onPageScrolled(int position, float positionOffset, int positionOffsetPixels),此时三个参数的值分别是position=0,positionOffset=0.0,positionOffsetPixels=0
3,当按住页面并往左拖动并且手指未松开时,先执行onPageScrollStateChanged(int state),此时,state=1,
然后执行onPageScrolled(int position, float positionOffset, int positionOffsetPixels),此时该方法的三个参数分别为position=0,positionOffset从0.0开始逐渐增加但始终小于1,positionOffsetPixels从0开始增加,但始终小于屏幕宽度的分辨率
4,继续第三条的状态,如果positionOffset<0.6时松开手指,此时还是回到原来的界面,而不显示新的界面,反之将显示新的界面,
5,当拖动后松开手指,无论是否显示新的界面,将先执行onPageScrollStateChanged(int state),此时,state=2,然后不断执行onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
5.1  如果滑动到新的界面,将执行onPageSelected(int position),postion将被赋予当前页面的索引,然后不断         执行onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
当positionOffset和positionOffsetPixels的值都变为0时,执行onPageScrollStateChanged,
此时state=0
5.2  如果回到当前的页面,将首先不断执行
     onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
当positionOffset和positionOffsetPixels的值都变为0时,执行onPageScrollStateChanged,
此时state=0
4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息