ViewPager OnPageChangeListener 总结
做一个ViewPager指示器时, 需要监听滑动事件, 对过程中遇到的问题总结下
- API
onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
position : 滑动时, 不论向左还是向右, 都是左边页面的索引;
positionOffset: 滑动的百分比, 范围 [0, 1) ; 向右划时, 逐渐增加 0 -> 1 ; 向左滑时, 逐渐减小, 从 1 -> 0;
positionOffsetPixels: 当前页面的偏移像素值
注意点, position的位置,并不是当前页面的索引, 而是始终是左边页面的索引, 即向右划动, 当前页面索引是 position, 而向左滑动时, 当前页面索引时 position+1
onPageSelected(int position)
当页面被选中时立即调用
当快速滑动页面, Action_up 时间触发时, 页面处于fling状态,也会调用
onPageScrollStateChanged(int state)
当滑动时, 依次调用 SCROLL_STATE_DRAGGING -> SCROLL_STATE_SETTLING ->SCROLL_STATE_IDLE
Action_down触发后,开始滑动 SCROLL_STATE_DRAGGING 调用, 同时也会调用 onPageScrolled; 当手指离开,状态改变为 SCROLL_STATE_SETTLING, 如果会到下一页, 会立即调用 onPageSelected, 然后在fling状态下, 仍然调用onPageScrolled, 结束后, 将状态设置为SCROLL_STATE_IDLE
浙公网安备 33010602011771号