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

 

posted on 2015-07-21 21:02  Iori_z  阅读(274)  评论(0)    收藏  举报

导航