2015-01-08 3 views
0

Когда мое представление находится в нажатом состоянии, и местоположение события касания покидает представление, я хочу, чтобы представление получило уведомление. Я также хочу получить уведомление, когда сенсорное местоположение снова появится в моем представлении, пока оно еще находится в нажатом состоянии.Как определить, выпущен ли touch поверх пользовательского вида Android?

мой взгляд простирается 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

Измените ваш, если заявление включать размеры кнопки

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 
+0

Таким образом, вы должны пойти, что «низкий уровень» за это? Свое странное, потому что вы думаете, что это будет очень важно. – bodyflex

+0

После некоторого расследования я вполне уверен, что это правильный ответ. Спасибо! – bodyflex