Android事件分发之前做了啥?

Android事件分发之前做了啥?

谈到Android事件分发机制问题,大家肯定都是在熟悉不过,Android体系中的常用知识,也是面试中经常被关注的问题,我也经常被问到,以前被问事件分发机制,我都是这样回答:


  1. ViewGroup中有dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent三个方法,可以分发,拦截,消费事件,而View中只有dispatchTouchEvent,onTouchEvent两个方法,不能做拦截处理。

  2. 事件分发–从父级向子级传递的,事件消费–从子级父级传递的。

  3. 然后再补一张分发流程图。挥笔画图一张,边画别说…

吧嗒吧嗒吧嗒…

这里写图片描述


好几次的时候,我自己都佩服自己,真的厉害的不行,巴拉巴拉的口水满天飞,都不带停顿的,讲一遍比一遍熟,感觉自己真TM的已经把事件分发机制研究的完全透彻了一样。

但是实际捏,我自己很了解,忽悠归忽悠,其实自己有几斤几两,自己还是非常清楚。

但是,事件分发的文章,大佬们已经写了很多了,主体讲的就是从父级子级传递,子级父级传递消费的主体部分,
小子这里写一些不一样的东西,这里主要讲主体部分之前的部分流程!


用户操作事件,先走DecorViewdispatchTouchEvent,获取callback对象,调用cb.dispatchTouchEvent方法

这里写图片描述

Activity默认实现了Window.Callback,所以就调用的是activitydispatchTouchEvent方法,然后里面再调用window.superDispatchTouchEvent

这里写图片描述
phoneWindow是Window的唯一实现类,getWindow即为phoneWindow
这里写图片描述
phoneWindow里面再调用图一的DecorView的superDispatchTouchEvent方法,然后就调用到ViewGroup的dispatchEvent分发事件了
这里写图片描述

后面的部分就是大佬们的ViewGoup-view的主体事件分发流程了,借用一张图(如果侵权就里面删掉)

这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值