本篇文章主要讲述ViewGroup中关于触摸事件传递的相关逻辑。主要梳理一下dispatchTouchEvent函数。

一些知识点

  • FLAG_DISALLOW_INTERCEPT,可以使用requestDisallowInterceptTouchEvent来设置ViewGroup的这个标记位,让ViewGroup不拦截事件。
  • ViewGroup只会将触摸事件转发给那些可见并且触摸事件发生在其可视范围内的子View
  • 如果一个子View没有接收ACTION_DOWN事件,那么这个事件系列的ACTION_MOVE或者ACTION_UP事件根本不会传递给它
  • 关于ViewGroup拦截与否消费与否的判断,只要记住一点就可以轻易判断:1 ViewGroup是否最终没有消费触摸事件(无论是自己自己消费,还是分发给子view消费),决定之后的触摸事件是否会再转发给它。
dispatchTouchEvent的主流程
dispatchTouchEvent中遍历child分发事件的逻辑
转换触摸事件并分发的过程-dispatchTransformedTouchEvent

更详细的源代码请查看我的github

图解Android事件传递之ViewGroup篇相关推荐

  1. Android事件分发之ViewGroup篇 -- ViewGroup的dispatchTouchEvent、onTouchEvent、onInterceptTouchEvent之间关系

    Android事件分发之ViewGroup篇(FatherViewGroup) – ViewGroup的dispatchTouchEvent.onTouchEvent.onInterceptTouch ...

  2. 细说Android事件传递

    一.View的dispatchTouchEvent和onTouchEvent 探讨Android事件传递机制前,明确android的两大基础控件类型:View和ViewGroup.View即普通的控件 ...

  3. Android事件传递机制(转)

    Android事件构成 在Android中,事件主要包括点按.长按.拖拽.滑动等,点按又包括单击和双击,另外还包括单指操作和多指操作.所有这些都构成了Android中的事件响应.总的来说,所有的事件都 ...

  4. android touch机制,细说Android事件传递机制(dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent)...

    本文背景:前些天用到了之前写的自定义图片文字复合控件,在给他设置监听时遇到了麻烦.虽然最后解决了问题,但发现在不重写LinearLayout的onInterceptTouchEvent时,子Image ...

  5. Android 事件传递机制总结

    Android 事件传递机制总结 Android View虽然不是四大组件,但是其重要程度堪比四大组件.初级工程师到中高级工程师,这些都是很重要的,因为事件分发机制面试也会经常被提及,如果我们能get ...

  6. android imageview 事件传递,Android 事件传递机制TextView,ImageView等没有默认clickable属性的View单独设置onTouch事件注意事项...

    本文讲解TextView,ImageView等没有默认clickable属性的View单独设置onTouch事件 Android 事件传递机制:Android 事件传递机制初涉 我们知道 Button ...

  7. Android事件传递可以这样理解

    前言 关于Android中事件传递机制早已是老生常谈的话题,甭管工作多久水平咋样应该都能道出一二.依稀记得刚接触事件分发那会,一股脑的钻进网络上那几张神图,什么三大方法.职责链,最后再巴拉巴拉贴一大堆 ...

  8. Android事件传递(分发)机制

    Android事件的构成: 在android中,事件主要包括点按,长按,拖拽,滑动等等,另外点按还包括点击和双击.所有这些都构成了android中的事件响应.总的来说所有的事件都由以下三个部分组成: ...

  9. Android事件传递机制【Touch事件】

    Android中提供了ViewGroup.View.Activity三个等级的Touch事件处理.也就是说,这三个地方都有事件回调方法. 测试DEMO视图结构: <com .orgcent.ev ...

最新文章

  1. fullcaledar日历插件
  2. python多线程处理数据库_在flask框架下利用Python的threading或thread多线程库如何操作数据库?...
  3. Windows 10 LTSB
  4. 萌娃六一对程序员老爸说:再不陪我玩我就长大了
  5. 从零开始拼凑的_如何从零开始拼凑AI
  6. OpenShift 4 - DevSecOps - 视频
  7. get和post方式传递参数
  8. Windows PE 背景知识
  9. gin--简单的登录界面的实现
  10. 图像处理 图像识别 模式识别 分类检测
  11. 北京内推 | Hulu机器学习应用平台团队招聘推荐大数据方向暑期实习生
  12. ARM处理器对比分析
  13. ssm框架bean_Bean简介:简化的WordPress框架
  14. 华师大计算机专业怎么样,2019年二本科班上岸华东师范大学计算机学硕,初试387分排名第四初复试经验分享!...
  15. Linux网卡up但是没有running,eth0 up但是没有running的小问题
  16. Java获得指定时区时间
  17. 【许晓笛】别傻了,瀑布到来时,一句口号根本守不住你的币
  18. mac电脑使用入门详解
  19. AD怎么输入坐标_实名推荐|相见恨晚的CAD坐标提取技巧
  20. 自学IOS开发第3天·基础SwiftUI之动态滑动列表(上)

热门文章

  1. 时序分析:串匹配—Brute-Force算法
  2. C++多个文本读取问题
  3. VTK嵌入MFC同步显示
  4. 一次合同违约复盘(一)
  5. 配置MYSQL远程连接
  6. phpcms v9 搜索页显示自定义字段
  7. WPF触屏Touch事件在嵌套控件中的响应问题
  8. springboot工程中各个层次的作用+springboot连接数据库的工具汇总+Mybatis的开发方式/语法
  9. 误删/usr/bin/python2.7解决方案
  10. SecureCRT报错ImportError: No module named itertools(解决方案无法复现)