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...