废话不多说,直接上图

  

图解:android中事件分发的起始点是Activity,有Activity里的Detorview通过DispatchTouchEvent开始分发,如图假设一个DOWN,MOVE,UP事件中的DOWN事件传入,通过Detorview的DispatchTouchEvent传到某一个ViewGroup中,ViewGroup也会经过DispatchTouchEvent分发事件,在View树中的分发无非有几个方向,它的父节点,它自己,它的子节点,它的兄弟节点,其中兄弟节点是不可能出现的情况,在树中,兄弟节点是不会有连接点的,所以我们可以看到图中父节点的分发通过在DispatchTouchEvent函数中返回false来搞定,它自己通过返回true来搞定,至于它的子节点可能会复杂一些,它还会通过本身的OnInterceptTouchEvent来分发事件,其本质原因在于在该事件设计中DispatchTouchEvent本身只负责单一事件的分发,而OnTouchEvent会负责通过分析多个事件确定这多个事件的行为,比如Onclick这样一个行为是由DOWN事件和UP事件组成的。OnInterceptTouchEvent被设计出来就是为了在某些特定的场景下,让开发者可以灵活生成由多个事件组成的行为。最后事件会分发到对应的View上,就会按照图右边执行的流程执行下去了。

一张图看懂android事件分发原理相关推荐

  1. 厉害!40 张图看懂分布式追踪系统原理及实践

    作者 | 码海 来源 | 码海 在微服务架构中,一次请求往往涉及到多个模块,多个中间件,多台机器的相互协作才能完成. 这一系列调用请求中,有些是串行的,有些是并行的,那么如何确定这个请求背后调用了哪些 ...

  2. 40张图看懂分布式追踪系统原理及实践

    前言 在微服务架构中,一次请求往往涉及到多个模块,多个中间件,多台机器的相互协作才能完成.这一系列调用请求中,有些是串行的,有些是并行的,那么如何确定这个请求背后调用了哪些应用,哪些模块,哪些节点及调 ...

  3. 传递给系统调用的数据区域太小怎么解决_40张图看懂分布式追踪系统原理及实践...

    作 者:码海 原文链接:https://mp.weixin.qq.com/s/U-8ttlVCfYtjEPOWKBHONA 前言 在微服务架构中,一次请求往往涉及到多个模块,多个中间件,多台机器的相互 ...

  4. 一篇文章一张思维导图看懂Android学习最佳路线

    一篇文章一张思维导图看懂Android学习最佳路线 先上一张android开发知识点学习路线图思维导图 Android学习路线从4个阶段来对Android的学习过程做一个全面的分析:Android初级 ...

  5. 一篇文章彻底搞懂Android事件分发机制

    本文讲的是一篇文章彻底搞懂Android事件分发机制,在android开发中会经常遇到滑动冲突(比如ScrollView或是SliddingMenu与ListView的嵌套)的问题,需要我们深入的了解 ...

  6. 开源项目许可证相关-一张图看懂几种开源许可证

    常见的几种许可 开源许可证允许每个人出于任何目的使用.修改和共享许可软件,前提是要保持软件的来源和开放性.以下许可证从要求条件严苛程度递减排序,从最严苛(GNU AGPLv3)到没有条件(未许可).请 ...

  7. 一张图看懂微服务架构路线

    目录 一张图看懂微服务架构路线 我为什么选择微服务架构? 微服务架构路线 基本思路 Docker 容器编排 Docker 容器管理 API网关 负载均衡 服务发现 事件总线 日志记录 监控和警报 分布 ...

  8. 一张图看懂图像识别算法发展历史

    一张图看懂图像识别算法发展历史

  9. 【转】几张图看懂列式存储

    几张图看懂列式存储 转载于:https://www.cnblogs.com/apeway/p/10870211.html

最新文章

  1. Git统计个人提交代码行数
  2. day_06、面向对象
  3. 怎么用计算机发出音乐声,解决方案:计算机技巧-如何使显示器的内置扬声器发出声音...
  4. 来看看程序员们是怎么自黑的
  5. 【小安翻唱】Dreams-黑之契约者 双蛋快乐~顺便来拉票咯!
  6. 超详细CookieSession的原理与用法
  7. Boosting原理学习
  8. 【案例】CRM客户管理系统的登录模型
  9. 水平线标记的用法和属性
  10. 福利彩票36选7模拟程序
  11. 深度揭秘:伪基站短信诈骗产业传奇始末!
  12. 使用LumaQQ来开发QQ机器人
  13. matlab飞机飞行
  14. ie浏览器读取本地文件并上传
  15. 创业的捷径!打造黄金人脉!
  16. 12.0 自定义SystemUI下拉状态栏和通知栏视图(二十)之锁屏通知布局
  17. 每日一篇(1):判断文件夹中是否有同名文件并处理重名问题
  18. Django学习笔记(二):MTV架构学习及使用步骤
  19. cocoaPods 查看当前源
  20. Python教你app如何限时试用

热门文章

  1. 代码也浪漫:用Python放一场烟花秀!
  2. 只有想不到,「99」种扩展Jupyter功能的好方法
  3. html怎么引入sass样式,[样式设置] 使用sass格式的方式
  4. efcore 更新关联表_如何在生产环境下用好EFCore
  5. mybatis-plusspringboot
  6. 团队作业9——第二次项目冲刺2(Beta阶段)
  7. 「PKUSC2018」星际穿越 (70分做法)
  8. 20165310java_blog_week6
  9. 为什么对开发者很重要?
  10. 普及组模板——线性筛素数