Android 确定列表视图是否即将停止滚动?

Android 确定列表视图是否即将停止滚动?,android,Android,我需要在一个listview中做一些动画,在它被抛出并即将停止后。我有一个listview,它将是一个固定的高度(我们不要问我为什么),每当滚动停止时,它应该有三个元素可见。我现在要做的是检测列表何时达到SCROLL\u STATE\u IDLE,如果当时有两个元素可见,我使用smoothScrollToPosition并达到3个项目可见的状态,它工作正常,但我想做的是检测卷轴何时即将停止,并在有三个项目可见时以编程方式停止卷轴。这有可能吗。。。任何代码片段、伪代码、algo都会对我有所帮助。您

我需要在一个listview中做一些动画,在它被抛出并即将停止后。我有一个listview,它将是一个固定的高度(我们不要问我为什么),每当滚动停止时,它应该有三个元素可见。我现在要做的是检测列表何时达到
SCROLL\u STATE\u IDLE
,如果当时有两个元素可见,我使用
smoothScrollToPosition
并达到3个项目可见的状态,它工作正常,但我想做的是检测卷轴何时即将停止,并在有三个项目可见时以编程方式停止卷轴。这有可能吗。。。任何代码片段、伪代码、algo都会对我有所帮助。

您可以设置一个,然后从absListView.getScrollY()存储每个示例中的值,并将其与上一个示例进行比较,以计算滚动的速度。一旦低于您定义的阈值,您就可以接管滚动

列表视图上的getScrollY将始终返回0。请看这个:-啊,该死的。使用这样的方法来计算滚动速度怎么样:我已经在使用它了,但问题是在进入空闲状态之前的最终速度并不一致。有时会达到临界值,有时不会。例如:-当速度达到10时,你决定控制卷轴,有时你会意识到,当速度为16时,滚动停止。可以说,您可以提高阈值,但随后会出现许多其他问题,尤其是当用户缓慢地抛出列表时。我认为,要使其正常工作,您可能需要实现自己的滚动。可以使用计算速度,然后设置滚动偏移的动画,使其精确停止在所需的位置。如果您知道需要滚动的确切距离,可以使用如下内容:private void computeAcceleration(){mAccel=(float)((2*(mGoalPosition mStartPosition)-2*mDuration*mVel)/Math.pow(mDuration,2));}