您的位置:首页 > 移动开发 > Android开发

Android事件分发机制(最简图解:两张图搞明白)

2017-12-17 17:25 609 查看
借鉴自http://www.jianshu.com/p/e99b5e8bd67b

不过他写的有点多,这里就浓缩下(还有讲的不够全,等我看完源码再进行补充)

onTouchEvent中分为

ACTION_DOWN

ACTION_MOVE

ACTION_UP

先讲ACTION_DOWN



dispatch就是分发事件。

不管是dispatch还是on,返回了true都是直接消费。返回了false都是向上传。返回了super都是按他们应该前往的方向传(dispatch是向下,on是向上)

activity的dispatch有所不同,返回false也是会消费,只有super才会向下分发。

onIntercept有点特殊,是ViewGroup的拦截机制,为了自己吃独食,不让view享用。如果true,就代表拦截成立,直接就跳转到ViewGroup的on了。

(这3句话理解了就能记住这幅图,建议看完后自己也去默画这个图)

ACTION_MOVE、ACTION_UP

其实ACTION_DOWN还是有私心的,像投名状的庞青云一样,他拥有的比ACTION_MOVE、ACTION_UP更多。



我们都知道在哪里返回了true(intercept以外)都是打算自己消费掉,而ACTION_MOVE、ACTION_UP也会随之生效。但是这张图的目的是要读者明白,如果在onTouchEvent的时候返回了true,消费了事件,比如图中的ViewGroup2,那么他的ACTION_MOVE、ACTION_UP甚至不会继续向下分发,而是直接给他的onTouchEvent了。虽然没啥卵用,但是需要知道一下。

(最后建议看看我的demo,对这个图提出了异议)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: