Rah*_*ari 2 android android-viewpager2
没有过度滚动的方法,因为ViewPager2我需要检测过度滚动,这样一旦没有更多页面,我就可以将用户带回主页。
ViewPager2没有用于过度滚动的公共方法,但是,可以通过监听来检测到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
}
})
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1661 次 |
| 最近记录: |