5

我在 android view-pager(ACL 的 r4)中发现了一个有趣的错误。

当您的手指在较旧或较慢的设备上滚动太快/离开屏幕边缘时,速度跟踪器会以错误的方式弹出视图寻呼机。

我可以在原始 Galaxy Tab、HTC Desire、Nexus One、旧金山、HTC Hero 上重现。

打开谷歌+、市场或其他具有相当低级的视图寻呼机实现的东西。

如果您转到最左侧的页面,然后将手指轻轻拉过屏幕的右边缘,您可以让 view-pager 跳到右侧(与拖动方向相反)

我需要进行更多调查,但这看起来速度跟踪器无法跟上速度较慢的设备。这当然可以使视图寻呼机在快速从左到右滚动时跳来跳去。在新市场 (3.3+) 上尝试从一侧到另一侧,看看令人讨厌的结果!

关于通过扩展类进行修复的任何想法。我认为当很多事情发生时屏幕可能会提供奇怪的结果,并且可能会丢失一些 MotionEvents,因为我发现几乎不可能在较新的设备上复制。(Nexus S、三星 GSII、Sensation)。

编辑:从 ACL v6 开始,此问题已得到解决

谢谢,克里斯

4

1 回答 1

5

我认为与 r4 一起发布的 ViewPager 版本存在一些类似的问题,这些问题已经得到修复。下一个版本应该很快就会到来。除了即将进行的修复之外,我们可能会随着时间的推移改进这种行为。

如果您很好奇并想编辑包含在支持库包中的源代码,我相信修复方法是在 onInterceptTouchEvent 期间从初始向下事件开始将 MotionEvents 传递给 VelocityTracker,而不是仅在 onTouchEvent 中发生拦截之后。这为 VelocityTracker 提供了更多可使用的数据。或者,您可以尝试使用其他触发器。

于 2011-11-03T17:50:37.063 回答