如果一个View(eg Button)触发Touch事件,Touch事件首先会传入到该View的dispatchTouchEvent()方法里。
dispatchTouchEvent()方法表示是否进行事件分发
返回值: true表示继续事件分发 ;false表示终止事件分发
onTouch()方法[View源码的dispatchTouchEvent()里的第三个if判断],如下面的截图:
该方法表示事件是否被消费
返回值:true表示事件已经被消费; false表示事件未消费
onTouchEvent()方法主要处理点击事件onClick()方法
言外之意
从上面的事件分发流程图可以得到的信息:
onTouch()方法先于onClick()方法执行,如果将onTouch()方法的返回值改为true,那么onClick()方法就不会执行。
总结
简单的说View处理Touch事件的总体流程:
dispatchTouchEvent()—>OnTouchListener.OnTouch()—>onTouchEvent()—>onClick()
## 参考 ##
http://blog.csdn.net/guolin_blog/article/details/9097463
http://blog.csdn.net/lfdfhl/article/details/51559847