2011-02-01 41 views
1

我有以下情況。我有一個視圖組和兩個視圖(一個繪製一個realshape,另一個繪製一個橢圓形)。視圖組和兩個視圖實現了OnTouchListener接口。但是,當觸摸視圖時,Viewgroup.onTouch(..)和RectView.onTouch()以及OvalView.onTouch()都會被調用。我的問題是,如果我想知道這個視圖已經被觸動了我需要做什麼?請給我提供一些信息或例子嗎?ViewGroup中的視圖

由於提前,

回答

0

好吧,讓我們來看看OnTouchListener

你看到那裏onTouch(View,MotionEvent)返回一個布爾值,如果它消耗了該事件。因此,考慮到這一點,您可能需要進行一些數學計算,看看您的RectView或OvalView是否包含觸摸事件(使用MotionEvent獲取X,Y座標)。如果它包含它,則返回true以表示該視圖消耗了觸摸事件。

現在我不清楚每個onTouch()被調用的順序,但我認爲它首先調用子視圖,如果該子視圖返回false,它將繼續調用onTouch的其餘部分( ) 方法。

如果區分是否觸摸了RectView或OvalView(例如理論上可以同時觸摸兩者),那麼必須進行一些附加工作以確定哪一個更喜歡接受(也許一個是繪製的在另一個之上)。

+0

哦,我看到..謝謝.. – Blackbelt 2011-02-01 14:54:14

0

您可以簡單地獲取接收觸摸事件的視圖的ID。

public boolean onTouch(View v, MotionEvent event) { 
     v.getId(); 
} 

您可以在xml中設置視圖的id或使用setId()方法。

相關問題