如何绕过或降低GestureDetector滚动阈值?

时间:2015-09-29 16:27:21

标签: android gesture

我有一个GestureDetector,我正在喂它MotionEvents,我非常依赖它的返回值。

现在当滚动量太低时,源代码中有以下行(android.view.GestureDetector line 578):

case MotionEvent.ACTION_MOVE:
// several checks that all not apply
else if ((Math.abs(scrollX) >= 1) || (Math.abs(scrollY) >= 1)) {

}

但如果滚动限制太低,则最后一个if不适用。想象一下手指滚动真的很慢,停一秒钟,继续滚动。当手指停止时,检测器返回FALSE,这意味着我将事件提供给下一层等,这不应该发生,因为它仍然是一个滚动。

如果我扩展探测器并覆盖整个方法,我必须复制粘贴除该行之外的所有内容并在那里输入0。

有人能想出一个更简单的解决方案,我的卷轴不会被打断吗?

1 个答案:

答案 0 :(得分:0)

如果手势监听器返回false并且您意识到用户抬起手指,那么手动收听ACTION_UP事件然后将事件提供给“下一层”怎么样?

@Override
public boolean onTouch(View v, MotionEvent event) {
    // ACTION_UP means user lifted all his fingers
    boolean actionUp = (event.getActionMasked() == MotionEvent.ACTION_UP);
    boolean result = mGestureDetector.onTouchEvent(event);

    if (!result && actionUp) {
        // Scrolling really finished, do something
    }
}