android - GestureDetector onScroll 的滚动延迟

标签 android scroll touch

我使用 GestureDetector 在自定义 View 中实现滚动。我的实现基于此:Smooth scrolling with inertia and edge resistance/snapback

我注意到滚动开始前有一个短暂的停顿:我检查了 onScroll 消息并注意到第一个消息仅在手指进行较大移动后才到达,这会在滚动开始时造成明显的滞后滚动。之后滚动很流畅。

似乎 GestureDetector 仅在运动事件之间的最小距离之后才开始发送 onScroll 消息,以确保手势不是长按或点击(顺便说一句,我设置了 setIsLongpressEnabled(false)).

有没有什么方法可以改变这种行为并创建平滑的滚动,而无需使用低级触摸事件实现自定义滚动手势?

最佳答案

答案是否定的,您必须创建自己的GestureDetector。如果您查看 Android 源代码 (GestureDetector.java),第 524 到 540 行用于检测单击的“触摸倾斜”。特别是第 528 行阻止调用 onScroll 事件,直到移动超出触摸溢出(从 View 配置中拉出)。您无法更改 View 配置,并且斜坡被硬编码为 16 像素。这是导致您看到的滞后的半径。

关于android - GestureDetector onScroll 的滚动延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7108578/

相关文章:

android - 如何检测 Android 上的触摸输入

android - 如果对模块的支持不是商业内核电话的选项,我如何为 Android 编写驱动程序?

java - 选择 Spinner Item 来更改 TextView 中的文本?

java - JTextPane 正在将其父 Scrollpane 滚动到底部

java - 如何向应用程序添加 onTouchEvent?

iphone - 如何检测触摸点是否被CALayer的绘制内容包含?

android - 如何在 Activity 重新启动时保留复杂对象?

android - 目前,在中国使用 Android 版谷歌地图是否有效?

html - 如何让内部div使用窗口滚动条?

Angular 7 - 虚拟滚动与异步订阅相结合