如何检测自定义Android视图上是否发布了触摸?

时间:2015-01-08 18:40:03

标签: android view gesture pressed

当我的视图处于按下状态且触摸事件的位置离开视图时,我希望视图得到通知。我还希望在触摸位置重新进入我的视图时仍然处于按下状态时收到通知。

我的视图扩展了View,目前正在实现此方法:

public boolean onTouchEvent(MotionEvent event) {
    boolean result = gestureDetector.onTouchEvent(event);
    if (!result) {
        if (event.getAction() == MotionEvent.ACTION_UP) {
            animate().scaleX(1).scaleY(1).setDuration(100).start();
            performClick();
        }
    }
    return result;
}

gestureDetector指的是此类的一个实例:

class GestureListener extends GestureDetector.SimpleOnGestureListener {
    public boolean onDown(MotionEvent e) {
        animate().scaleX(0.9f).scaleY(0.9f).setDuration(100).start();
        return true;
    }
}

这很好用,但是当按下触摸并在我的视图外部释放时,MotionEvent.ACTION_UP仍会被触发(因此也performClick()),这不是我正在寻找的行为对于。我在MotionEvent中尝试了很多其他操作,但没有做到这一点。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

更改if语句以包含按钮的尺寸

boolean inX == event.getX() >= myButton.getX() && event.getX() <= myButton.getX()+myButton.getWidth();

boolean inY == event.getY() >= myButton.getY() && event.getY() <= myButton.getY()+myButton.getWidth();

if (event.getAction() == MotionEvent.ACTION_UP && inX && inY) {
       // do cool stuff