2015-01-08 91 views
0

當我的視圖處於按下狀態並且觸摸事件的位置離開視圖時,我希望視圖得到通知。我還希望在觸摸位置仍處於按下狀態時重新進入視圖時收到通知。如何檢測觸摸是否在定製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

更改您的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 
+0

所以,你需要去的是「低水平」做它的尺寸是多少?有點奇怪,因爲你會認爲這將是一件非常重要的事情。 – bodyflex

+0

經過一番調查後,我很確定這是正確的答案。謝謝! – bodyflex