安卓事件分發(fā):事件列都是以DOWN事件開始、UP事件結束,中間有無數(shù)的MOVE事件,還有可能人員原因事件的cancel事件
事件分發(fā)的本質:
將點擊事件(MotionEvent)傳遞到某個具體的View & 處理的整個過程
即 事件傳遞的過程 = 分發(fā)過程。
事件分發(fā)在Activity、ViewGroup、View及其派生類組成間傳遞
ViewGroup其本身也是view的子類,是安卓所有布局的父類,ViewGroup實際也是一個view,只是多了可包含子view定義布局參數(shù)的功能
例如:
1.首先會將點擊事件傳遞到Activity中,具體是執(zhí)行dispatchTouchEvent()進行事件分發(fā)
2.用戶點擊具體view控件,然后ViewGroup.dispatchTouchEvent,ViewGroup.onInterceptTouchEvent(事件攔截 false,true),false允許事件繼續(xù)向子view傳遞(尋找被點擊的子view(遍歷所有子view,找到被點擊的子view,調(diào)用子view控件的dispatchTouchEvent)), true(需要手動復寫設置)不允許事件繼續(xù)向子view傳遞(事件返回父類,ViewGroup父類dispatchTouchEvent,然后滴哦用自己的OnTouch -> onTouchEvent -> performClick ->OnClick)結束