觸摸事件攔截機制
在MotionEvent中封裝了不少的事件類型奸攻,如
- 按下MotionEvent.ACTION_DOWN
- 移動MotionEvent.ACTION_MOVE
- 離開MotionEvent.ACTIION_MOVE
等
假設(shè)現(xiàn)在有三個控件,分別用三個職位來表示
這三個控件的關(guān)系是ViewGroupA 包含 ViewGroupB旅赢,ViewGroupB 包含 myView斜姥。
- 總經(jīng)理 代表 ViewGroupA
- 部門負責人代表 ViewGroupB
- 程序員 myView
假如現(xiàn)在有一個 項目介入進來
- 事件的傳遞關(guān)系是:總經(jīng)理分發(fā)給部長,部長分發(fā)給程序員武花。
- 事件的處理關(guān)系是:程序員匯報部長圆凰,部長匯報總經(jīng)理。
那么換裝view控件中來髓堪,dispatcfhTouchEvent和OninterceptTouchEvent負責事件的分發(fā)送朱,也就是前邊所說道的任務(wù)分發(fā)。onTouchEvent 負責事件的執(zhí)行干旁。
假如現(xiàn)在用戶在myView中做了一個觸碰操作驶沼,那么
- 事件的分發(fā)到執(zhí)行
1.dispatcfhTouchEvent ViewGroupA , OninterceptTouchEvent ViewGroupA
2.dispatcfhTouchEvent ViewGroupB , OninterceptTouchEvent ViewGroupB
3.dispatcfhTouchEvent myView, onTouch myView
4.onTouch ViewGroupA
4.onTouch ViewGroupB
分發(fā)的時候
- 返回false表示未攔截,繼續(xù)分發(fā)任務(wù)
- 返回ture表示攔截任務(wù)争群,不在繼續(xù)分發(fā)給子控件回怜,自己執(zhí)行onTouchEvent
處理的時候
- 返回false表示未處理完成,交給父集控件處理换薄。
- 返回ture表示不在像負空間匯報玉雾,自己決定自己的命運。