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