android Touch傳遞過程的理解

2021-07-26 17:04:44 字數 952 閱讀 8854

touchevent事件的處理:在view樹中,找到乙個可以處理這個touch事件的view,然後不斷

把touchevent事件傳遞給這個view

1.查詢的過程發生在action_down時

從view樹的根view開始從上向下,傳遞touchevent事件,這個過程是在檢視是否有

viewgroup攔截,如果有,touchevent事件不會再向下傳遞;

如果沒有, touchevent事件會傳遞到最底層的view/viewgroup

再從底向上,傳遞touchevent事件,這過程是在檢視是否有view/viewgroup可以處理

touchevent事件,如果有,記錄這個view/viewgroup,和從根view到達這個view

/viewgroup的路徑,且不會再向上傳遞這個touchevent

如果沒有,則view樹不會再處理後續的touchevent事件

2.查詢到後, 會根據記錄下來的路徑,把後續的touchevent事件不斷通過記錄的路徑傳遞

給view,這個過程依然可以攔截這個touchevent,但這個攔截不會妨礙後面的touchevent

接著按照記錄的路徑傳遞給view

view.dispatchtouchevent()負責呼叫ontouchevent(),ontouchevent()的返回值決定了view是否處理

這個事件,true代表處理,false代表不處理

viewgroup繼承了view,重寫了dispatchtouchevent(),dispatchtouchevent()負責向viewgroup的子view

傳遞touchevent,也負責呼叫自身的ontouchevent,判斷它本身出否處理該touchevent;

也就是它負責向下傳遞touchevent事件

viewgroup的onintercepttouchevent負責攔截touchevent,true代表攔截

Android touch事件傳遞

android的touch事件分發機制,涉及到每一層級的處理和傳遞,比較複雜,本文是在參考以下日誌和android原始碼的基礎上總結的,在此表示感謝 1.touch事件傳遞過程 touch事件經過android核心層的處理,最終會傳遞到activity的dispatchtouchevent方法,由此...

Android Touch事件傳遞機制

1 基礎知識 1 所有touch事件都被封裝成了motionevent物件,包括touch的位置 時間 歷史記錄以及第幾個手指 多指觸控 等。2 事件型別分為action down,action up,action move,action pointer down,action pointer up...

Android Touch事件傳遞流程

1 dispatchtouchevent 路由,是否事件往下傳遞。返回super.dispatchtouchevent,則事件交給自身的onintercepttouchevent viewgroup 或者ontouchevent view 來對事件進一步處理。2 onintercepttouchev...