2011-12-09 218 views
0

我想使用偵聽器從屏幕捕捉所有動作事件,例如,如果我從屏幕上方向上進行滑動觸摸,觸摸移動和觸摸。由於此觸摸將覆蓋多個視圖示例線性視圖,按鈕和文本字段我試圖附加在所有視圖的觸摸監聽器上,但我會得到不好的數據,例如我會觸摸起來沒有觸摸起伏等。請告知一種可以實現這一點的方式。如何使用偵聽器/偵聽器捕獲所有動作事件

+0

當一個觸摸開始在視圖上。 Android會一直髮送到相同的視圖,直到您移開手指。 –

回答

3

一個很好的方式來處理,這是對OnTouchListener重視所有的意見父ViewGroup中(佈局) 。

例如,您可以在您的問題中提到具有多個視圖(線性視圖,按鈕和文本字段)的RelativeLayout。你可以這樣做:

RelativeLayout currentView = (RelativeLayout) findViewById(R.id.MyRelativeLayout); 
currentView.addView(aSubView); 
currentView.addView(aSubButton); 
currentView.addView(aSubTextView); 

currentView.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     // Here you will receive all the motion event. 
     return false; 
    } 
}); 
+0

這樣做,這也適用於線性佈局和網格佈局? –

+1

是的,它會的。如果它解決了您的問題,請將答案標記爲已接受。謝謝。 – jobesu14

+0

我剛試過這個它不工作! ...因爲其他視圖已經是孩子了,你可以再次添加它們。另外,只有在附着的孩子不會捕獲所有動作事件的情況下,才能將偵聽器附加到根 –

0

您可以覆蓋您的活動中的dispatchTouchEvent(MotionEvent ev)方法。

在MotionEvent轉發到不同的活動視圖之前調用它。

您可以然後做你想要做什麼用,轉發它們,使用它們...

+0

我想用聽衆 –