首先看看讲事件分发的博客: http://blog.youkuaiyun.com/xiaanming/article/details/21696315 和 http://www.csdn123.com/html/topnews201408/57/3457.htm
https://blog.youkuaiyun.com/jo__yang/article/details/52789523
https://blog.youkuaiyun.com/a553181867/article/details/51296308
点击事件是在ViewRootImpl.java中生成的。
事件分发是自上而下的, 父节点消费了事件后, 子节点就无法再得到该事件(即拦截);如果子view消费了事件, 那么父view就不再传递该事件。、
最简单的例子, 一个viewgroup里包含一个view, 点击这个view。
07-04 18:08:08.507 10851-10851/android.gr.com.myapplication D/MyRelativeLayout: viewgroup dispatchTouchEvent
07-04 18:08:08.507 10851-10851/android.gr.com.myapplication D/MyRelativeLayout: viewgroup onInterceptTouchEvent
07-04 18:08:08.507 10851-10851/android.gr.com.myapplication D/MyView: view dispatchTouchEvent
07-04 18:08:08.508 10851-10851/android.gr.com.myapplication D/MyView: view onTouchEvent
07-04 18:08:08.508 10851-10851/android.gr.com.myapplication D/MyRelativeLayout: viewgroup onTouchEvent
我们要注意下ViewGroup的dispatchTouchEvent函数中这块代码, 如果拦截了ACTION_DOWN事件, 后续就不会有MOVE、UP事件了。