【问题标题】:Android: onTouchListener - cancel touch event when user moves touch outside of viewAndroid:onTouchListener - 当用户将触摸移到视图之外时取消触摸事件
【发布时间】:2017-01-07 18:40:07
【问题描述】:

我们都做到了,当我们按住一个按钮时,我们不确定是否要点击,在仍然按住屏幕的同时,我们移动手指,这样触摸事件就不会触发.

我想用我的 onTouchListener 来模仿这种行为。我有一张卡片清单。每张卡片都有一个 onTouchListener,它在触摸事件 UP 时触发 Intent。如果用户在仍然按住屏幕的同时将手指从卡片上移开,我想确保不会触发该意图。

有什么想法吗?

【问题讨论】:

    标签: java android ontouchlistener


    【解决方案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;
    }
    

    【讨论】:

    • 感谢您的回复,看起来很有希望。至于'width'和'height',这些是内置在onTouchListener中的,还是我必须自己定义?
    • 不,您可以通过view.getWidth()/view.getHeight()@JoshBeckwith 获得这些值
    • 所以我试了一下,它按预期工作。但是,在对您的答案进行更多研究时,我发现了一个更简单的解决方案。实际上有一个 MotionEvent.ACTION_OUTSIDE 做同样的事情。只是想我会让你知道。编辑:我已经从 MotionEvent.ACTION_OUTSIDE 切换到 MotionEvent.ACTION_CANCEL 以便我可以正确地重置我的视图颜色属性。它们的工作方式非常相似。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2019-03-08
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多