Android: onTouchListener - 当用户将触摸移动到视图外部时取消触摸事件

4
我们都有过这样的经历,当我们按住一个按钮时,不确定是否要点击它,同时手指还在屏幕上移动,以免触发触摸事件。
我想用我的onTouchListener来模仿这种行为。我有一张卡片列表。每张卡片都有一个onTouchListener,在触摸事件UP时会触发一个Intent。如果用户在仍然按住屏幕的情况下将手指移开卡片,我想确保该Intent不会被触发。
有什么好的想法吗?
1个回答

1
使用这段代码。
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            break;
        case MotionEvent.ACTION_UP:
            if (event.getX() < width && event.getY() < height) {
                //finger is on the card and fire intent
            }
            break;
    }
    return true;
}

谢谢回复,看起来很有前途。至于“宽度”和“高度”,这些是内置在onTouchListener中的吗?还是我需要自己定义? - Josh Beckwith
你可以使用 view.getWidth()/view.getHeight() 来获取这些值。 @JoshBeckwith - Amir_P
1
所以我尝试了一下,它按预期工作。然而,在研究您的答案时,我发现了一个更简单的解决方案。实际上,有一个 MotionEvent.ACTION_OUTSIDE 可以完全做到同样的事情。只是想让你知道。编辑:我已经从 MotionEvent.ACTION_OUTSIDE 切换到 MotionEvent.ACTION_CANCEL,以便我可以正确地重置我的视图颜色属性。它们非常相似。 - Josh Beckwith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接