1. 基礎知識android
2. 傳遞流程git
更多請直接閱讀PDF英文原文:Mastering the Android Touch Systemgithub
示例代碼:Demo@Github函數
附上原文兩張流程圖:spa
1. View不處理事件流程圖對象
2. View處理事件流程圖事件
我的補充:get
全部事件都會通過activity的dispatchTouchEvent()it
不管在那一層對down事件進行消費,以後的事件都不會在往下傳遞,如(結合下圖):io
1.由activity消費down事件,則以後的事件直接由activity的dispatchTouchEvent()傳遞到activity的onTouchEvent(),不會再傳遞到ViewGroup層
2.由ViewGroup消費down事件,則以後的事件都由ViewGroup的dispatchTouchEvent()傳遞到ViewGroup的onTouchEvent(),不會再傳遞到View層,也不會再通過onInterceptTouchEvent();可是Activity的dispatchTouchEvent()依然能夠接收並處理事件(固然也可攔截重發),而activity的onTouchEvent()不會接收到任何事件。
3.由View消費down事件,則以後的事件都會傳到View的onTouchEvent(),但不會傳遞到Activity和ViewGroup的onTouchEvent();Activity的dispatchTouchEvent()、ViewGroup的dispatchTouchEvent()和onInterceptTouchEvent()依然能夠接收並處理事件(固然也可攔截重發)
下面附我的繪製的簡易事件傳遞流程圖: