实现ViewPager最后一页向后滑动监听

本文旨在分享“ 如何准确实现ViewPager第一页向前和最后一页向后滑动监听 ”。

 方法总比问题多!                        

【本文只是其中的一种方案,期待其他方案的分享!感谢拍砖、建议和支持!】


一、思路解析

ViewPager的滑动状态有三种:

1)SCROLL_STATE_DRAGGING——Indicates that the pager is currently being dragged by the user.

【注】正在被用户拖拽滑动状态

2)SCROLL_STATE_SETTLING——Indicates that the pager is in the process of settling to a final position.

【注】被用户拖动并松手后,ViewPager自动滑动,即将归于停止的状态

3)SCROLL_STATE_IDLE——Indicates that the pager is in an idle, settled state.

【注】被用户滑动后的最终静止状态

以上三种状态,当滑动ViewPager的时候,如果处于第一页,继续向前滑动的时候不会产生SCROLL_STATE_SETTLING状态,但是如果向下一页方向滑动,则必然会产生SCROLL_STATE_SETTLING状态;如果处于最后一页,继续往后滑动,不会产生SCROLL_STATE_SETTLING状态,但是往前一页滑动,也必然会产生SCROLL_STATE_SETTLING状态。

所以,可以将SCROLL_STATE_SETTLING这个状态作为监听的flag!


二、Code Show【本文此处仅摘取关键代码】

private boolean mIsScrolled ;                   //  viewpager是否处于惯性滑动

@Override

public   void   onPageScrollStateChanged (int   state)  {                 // 发生滑动状态改变时回调

switch (state) {

       case  ViewPager.SCROLL_STATE_DRAGGING:

                mIsScrolled = false;

                 break;

        case ViewPager.SCROLL_STATE_SETTLING:

                 mIsScrolled = true;

                 break;

       case ViewPager.SCROLL_STATE_IDLE:

                 if ( ! mIsScrolled ) {

                              // TODO     你想要实现的操作

                  }

                 mIsScrolled = true;

                 break;

}

}

你可能感兴趣的:(实现ViewPager最后一页向后滑动监听)