关于Android View的事件分发机制看过很多文章,踩过很多的坑,也一直有自己的理解,但是当我看到这篇文章之后,真的觉得它非常好,作者表述的让人非常容易理解,不会那么抽象。下面是传送门:
https://github.com/Idtk/Blog/blob/master/Blog/11、TouchEvent.md
感觉自己再多做一些总结都是累赘,不过我还是想用自己的话来说一遍。
比如有三个小兄弟老大<Activity>、老二<ViewGroup>、老三<View>。突然有一天,家里发现丢了钱,老父亲就开始审问三个孩子,到底是谁拿了钱。(用户开始触发事件)先问答老大<Activity>是不是你拿的,老大直接甩锅“不是我拿的”,然后嫌疑就到了老二的头上(事件传递给了ViewGroup),老二这个时候就比较纠结了他有两种选择:
1、自己承认拿了钱那么就由老二来承担这个责任(调用ViewGroup 的onTouchEvent)->(ViewGroup的onInterceptTouchEvent返回true)。
2、甩锅给老三<View>(ViewGroup的onInterceptTouchEvent返回false)那么老父亲就开始审问老三。
同样的老三也面临着和老二一样的困境:
1、自己承认拿了钱那么就由老三来承担这个责任(调用View 的onTouchEvent)->(View的onInterceptTouchEvent返回true)。
2、打死也不承认(View的onInterceptTouchEvent返回false)然后老父亲没办法就只能罚老大(Activity)。