使用GestureDetector onScroll滚动延迟

hth*_*hms 8 android scroll touch

我用来GestureDetector在自定义中实现滚动View.我的实现基于此:平滑滚动,惯性和边缘阻力/回弹

我注意到在滚动开始之前有一个短暂的停顿:我检查了onScroll消息并注意到第一个消息仅在手指移动较大之后到达,这在滚动开始时引起明显的滞后.之后滚动顺利.

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

有没有办法改变这种行为并创建一个平滑的滚动,而不使用低级触摸事件实现自定义滚动手势?

小智 10

答案是否定的,你必须创建自己的GestureDetector.如果您查看Android源代码(GestureDetector.java),则使用524到540行来检测单个点击的"触摸slop".具体地,线528防止onScroll事件被调用,直到移动位于触摸斜面(从视图配置拉出)之外.您无法更改视图配置,并且slop硬编码为16像素.这是导致您看到的滞后的半径.