gpt4 book ai didi

android - 区分 ViewPager 中的用户滚动和程序化页面更改

转载 作者:IT老高 更新时间:2023-10-28 21:45:08 27 4
gpt4 key购买 nike

我的应用程序中有一个 android.support.v4.view.ViewPager,我想区分以编程方式启动的平滑滚动和用户启动的触摸滚动。

我查看了 ViewPager.OnPageChangeListener,我相信答案可能就在其中,但我不确定如何。

最佳答案

好的,事实证明我对 ViewPager.onPageChangeListener 中的答案是正确的。特别是它在于使用onPageScrollStateChanged(int state)ViewPager 中的页面基本上可以处于三种状态:

  1. Dragging:表示分页器当前正在被用户拖动。
  2. 空闲:表示寻呼机处于空闲、稳定状态。
  3. 稳定:表示寻呼机正在稳定到最终位置。

所以拖动状态只有在当前页面被用户物理拖动时才会出现。因此,当用户滑动页面时,状态按以下顺序发生:拖动 -> 稳定 -> 空闲。现在,onPageSelected(int position) 方法在“Settling”和“Idle”状态之间被调用。因此,为了确定页面更改是否是由用户滚动引起的,只需要检查之前的状态是“拖动”并且当前状态是“稳定”。然后,您可以保留一个 boolean 变量来跟踪页面更改是否是用户发起的,并在 onPageSelected(int position) 方法中检查它。

这是我的 onPageScrollStateChanged 方法

public void onPageScrollStateChanged(int state) 
{
if (previousState == ViewPager.SCROLL_STATE_DRAGGING
&& state == ViewPager.SCROLL_STATE_SETTLING)
userScrollChange = true;

else if (previousState == ViewPager.SCROLL_STATE_SETTLING
&& state == ViewPager.SCROLL_STATE_IDLE)
userScrollChange = false;

previousState = state;
}

ifelse if 语句不必如此明确,但为了清楚起见,我这样做了。

关于android - 区分 ViewPager 中的用户滚动和程序化页面更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17819970/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com