从源码角度分析android事件分发处理机制
2023-09-14 09:06:42 时间
正式开始之前的准备工作:
之前也写过一篇《android事件拦截处理机制详解》的博客,通过博客的名字也可以知道那篇博客只是分析了android控件View对事件的拦截和处理,简单的总结如下:
1)父View优先拦截当前事件,拦截不成功就让子View对当前事件进行拦截。
2)如果拦截成功的话,就会沿着子view到父View的路径查找onTouchEvent返回true的那个子View,让该子View对该事件进行处理;
3)同时如果某一个View对当前事件拦截成功的话,当前事件就不会继续分发给这个View的子View。
一直在说事件,那么事件到底是指什么?这里所说的事件是指手指按下(down)、移动(move)、抬起(up)此为一个事件集合或者说是事件序列,从手指接触屏幕开始到手指离开屏幕结束。所以本篇所说的事件序列或者事件集合是指从手指刚接触屏幕到离开屏幕的那一瞬间产生的各个事件:
事件序列为:ACTION_DOWN-->ACTION_MOVE-->ACTION-->...->ACTION_UP事件。
上面的总结很简单,详细的分析以及说明都在《android事件拦截处理机制详解》这篇文章里,有兴趣的可以看一下。
其实那篇博客说的有点简单了,只是涉及到View的层面而没有涉及到Activity和Window层面。本篇就在此基础上加上对事件源码的分析来进行补充说明。
通过《
相关文章
- 【Android】 Android体系结构图
- [Android Security] 如何把java代码转换成smali代码
- Android代码规范----按钮单击事件的四种写法
- 【第三篇】学习 android 事件总线androidEventbus之list数据事件的传递,发送list数据事件到另外一个Activity
- Android平台设计规范整理(尺寸+组成元素+字体+滑块)
- 【ANDROID游戏开发之九】(细节处理)触屏事件中的BUG解决方案以及禁止横屏和竖屏切换!
- Android学习---ListView的点击事件,simpleAdapter和arrayadapter,SimpleCursoAdapter的原理和使用
- 【第四篇】学习 android 事件总线androidEventbus之发布事件,子线程中接收
- 【第三篇】学习 android 事件总线androidEventbus之list数据事件的传递,发送list数据事件到另外一个Activity
- Android开机动画启动流程
- 中年程序员只有几年Android开发经验,该如何保持在公司的核心竞争力?
- Android权限机制验证性实验
- Android Studio 更新Gradle插件
- 【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( 使用 DexClassLoader 获取组件类失败 | 失败原因分析 | 自定义类加载器没有加载组件类的权限 )
- 【Android 逆向】类加载器 ClassLoader ( 加载 Android 组件的类加载器 | 双亲委派机制实例分析 )
- 【Android 逆向】Android 进程注入工具开发 ( SO 进程注入环境及 root 权限获取 | 进程注入时序分析 )
- 【Android 插件化】Hook 插件化框架 ( 创建插件应用 | 拷贝插件 APK | 初始化插件包 | 测试插件 DEX 字节码 )
- 【Android 安装包优化】开启 ProGuard 混淆 ( 压缩 Shrink | 优化 Optimize | 混淆 Obfuscate | 预检 | 混淆文件编写 | 混淆前后对比 )
- Android 根据规划 Touch 分配和消费机制的事件
- Android API Guides---Storage Access Framework
- 手机User-Agent大全(Android爬虫)
- Android Framework 全面分析 BootAnimation
- Android kotlin使用RecyclerView自定义adapter实例和点击事件
- android emulator虚拟设备之qemu pipe分析(三)