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()依然能够接收并处理事件(固然也可拦截重发)
下面附我的绘制的简易事件传递流程图: