实现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;

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容