2013年3月2日 星期六

Android onInterceptTouchEvent&onTouchEvent

在ViewGroup中可以override onInterceptTouchEvent與onTouchEvent這兩個物件,
而View中只可以override onTouchEvent這個物件,接下來將會說明他們的功能為何。

假設有 RelativeLayoutA,  RelativeLayoutB,  ButtonC

當我們在點擊ButtonC時, 會先由parent view收到訊息, 然後開始往child view傳。







        首先,A的onInterceptTouchEvent收到down event後return false,然後會把down event會傳給的B的onInterceptTouchEvent,然後B發現它下面沒有groupview了就把down event傳給C的onTouchEvent, 如果C return true也就是告訴系統接下來的action event 都是由她處理,直接傳給他就可以了。
         所以越上層的view會有優先決定處理action event的機會,那麼view的onTouchEvent何時會return true呢? 當我們在設置view的listener時,系統會認為這個view是有要處理action event的。





沒有留言:

張貼留言