我在android view-pager(ACL的r4)中发现了一个有趣的错误。
在较旧或较慢的设备上滚动手指过快/偏离屏幕边缘时,速度跟踪器会以错误的方式投射视图寻呼机。
我可以在原版Galaxy Tab,HTC Desire,Nexus One,旧金山,HTC Hero上重现。
打开谷歌+,市场或具有相当变化的视图寻呼机实现的东西。
如果你走到最左边的页面,然后轻轻拉动你的手指 在屏幕的右边缘,您可以让视图寻呼机跳转 向右 (与拖动方向相反的方式) 。
我需要进一步调查,但这看起来速度跟踪器无法跟上速度较慢的设备。当然,当从左向右快速滚动时,这可以使视图寻呼机跳转。尝试新市场(3.3+)从一边走到另一边,看到令人讨厌的结果!
通过扩展类来修复任何想法。我认为屏幕可能会提供奇怪的结果,当很多正在进行时可能会丢失一些MotionEvent,因为我发现它几乎不可能在较新的设备上复制。 (Nexus S,三星GSII,Sensation)。
编辑:此问题已从ACL v6
解决谢谢, 克里斯
答案 0 :(得分:5)
我认为与r4一起发布的ViewPager版本有一些这样的问题已经修复。下一个版本即将推出。除了即将到来的修复之外,这种行为我们可能会随着时间的推移而改进。
如果你很好奇并希望编辑支持库包中包含的源代码,我相信修复是在初始向下事件的onInterceptTouchEvent期间开始将MotionEvents传递给VelocityTracker,而不是仅在onTouchEvent中发生拦截之后。这为VelocityTracker提供了更多数据。或者,您可以尝试其他触发器。