Android中父View和子view的點擊事件

轉載自:http://blog.csdn.net/andylao62/article/details/47665103。總結的很清楚

android系統中的每個View的子類都具有下面三個和TouchEvent處理密切相關的方法:

1)public boolean dispatchTouchEvent(MotionEvent ev)  這個方法用來分發TouchEvent

2)public boolean onInterceptTouchEvent(MotionEvent ev) 這個方法用來攔截TouchEvent

3)public boolean onTouchEvent(MotionEvent ev) 這個方法用來處理TouchEvent


當TouchEvent發生時,首先Activity將TouchEvent傳遞給最頂層的View, 

TouchEvent最先到達最頂層 view 的 dispatchTouchEvent ,然後由  dispatchTouchEvent 方法進行分發,

如果dispatchTouchEvent返回true ,則交給這個view的onTouchEvent處理,

如果dispatchTouchEvent返回 false ,則交給這個 view 的 interceptTouchEvent 方法來決定是否要攔截這個事件,

如果 interceptTouchEvent 返回 true ,也就是攔截掉了,則交給它的 onTouchEvent 來處理,

如果 interceptTouchEvent 返回 false ,那麼就傳遞給子 view ,由子 view 的 dispatchTouchEvent 再來開始這個事件的分發。

如果事件傳遞到某一層的子 view 的 onTouchEvent 上了,這個方法返回了 false ,那麼這個事件會從這個 view 往上傳遞,都是 onTouchEvent 來接收。

而如果傳遞到最上面的 onTouchEvent 也返回 false 的話,這個事件就會“消失”,而且接收不到下一次事件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章