【问题标题】:Detect overscroll or end of pages event in ViewPager2 android在 ViewPager2 android 中检测过度滚动或页面结束事件
【发布时间】:2020-10-23 14:18:50
【问题描述】:

ViewPager2 中没有过度滚动的方法我需要检测过度滚动,以便在没有更多页面时将用户带回主页。

【问题讨论】:

    标签: android android-viewpager2


    【解决方案1】:

    ViewPager2没有公共的overscroll方法,但是,可以通过监听onPageScrollStateChanged来检测

    滚动状态下onPageScrollStateChanged 中的事件转换通常是SCROLL_STATE_DRAGGING -> SCROLL_STATE_SETTLING -> 更改页面时SCROLL_STATE_IDLE

    但在过度滚动的情况下,序列是SCROLL_STATE_DRAGGING -> SCROLL_STATE_IDLE

    private fun listenOverScroll(currentIndex: Int, size: Int) {
            var index = currentIndex
            var previousState =  ViewPager2.SCROLL_STATE_IDLE
            viewPager2.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
    
                override fun onPageSelected(position: Int) {
                    super.onPageSelected(position)
                    index = position
                }
    
                override fun onPageScrollStateChanged(state: Int) {
                    Log.d(TAG,"Index:: $index | state:: $state | prevState:: $previousState")
                    super.onPageScrollStateChanged(state)
                    if ((index >= size - 1 || index <= 0)// end of list. these checks can be 
                                                         // used individualy to detect end or start of pages
                            && previousState == ViewPager2.SCROLL_STATE_DRAGGING // from DRAGGING
                            && state == ViewPager2.SCROLL_STATE_IDLE) {          // to IDLE
                        Log.d(TAG,"OVERSCROLL:: Index:: $index | state:: $state | prevState:: $previousState")
                        //overscroll performed. do your work here
                    }
                    previousState = state
                }
            })
        }
    
    

    【讨论】:

      猜你喜欢
      • 2016-05-25
      • 2017-06-07
      • 2017-09-03
      • 2021-08-21
      • 1970-01-01
      • 2011-04-27
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多