我有一个android.support.v4.view.ViewPager
在我的应用程序中,我想区分以编程方式启动的平滑滚动和用户启动的触摸滚动。
我看过ViewPager.OnPageChangeListener
我相信答案可能就在那里,但我只是不确定如何。
好吧,事实证明我的答案是正确的ViewPager.onPageChangeListener
。特别是它在于使用onPageScrollStateChanged(int state)
。本质上,页面中的页面有三种状态:ViewPager
可以在:
- 拖动:表示寻呼机当前正在被用户拖动。
- 空闲:表示寻呼机处于空闲、固定状态。
- 正在稳定:表示寻呼机正在稳定到最终位置。
因此,拖动状态仅在当前页面被用户物理拖动时发生。因此,当用户滑动页面时,状态按以下顺序发生:拖动 -> 稳定 -> 空闲。现在onPageSelected(int position)
方法在“Setting”和“Idle”状态之间调用。因此,为了确定页面更改是否是由用户滚动引起的,只需检查先前状态是否为“拖动”以及当前状态是否为“设置”。然后你可以保留一个boolean
变量来跟踪页面更改是否是用户发起的,并在您的onPageSelected(int position)
method.
这是我的onPageScrollStateChanged
method
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;
}
The if
and else if
陈述不必如此明确,但我这样做是为了清楚起见。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)