Android事件分发机制简述

Android事件分发机制 开始的开始 当我手指触摸到手机屏幕后,给我所见即所得的触控体验,它的背后发生了什么?出于对它的好奇,就有了这篇文章。因为本人不喜欢大段大段的源码分析,所以本文尽量从设计的角度去把把事件分发机制的脉络,少贴源码是我的目标之一,虽然这么说,但当我把文章写完后最后发现依然贴了不少代码,想删减却没法减少,都是很核心的部分。本博客的主要内容如下: 事件分发的整体设计 ViewRootImpl的创建 应用层级的事件分发流程 为了后面更容易的理解事件分发机制,在介绍核心内容前,准备了一些前置知识。 前置知识:View 阅读详情

android的事件分发机制有两个主角:View、ViewGroup
ViewGroup包含View,作为孩子的View又可以作为ViewGroup包含下一级View……
ViewGroup有三个事件:onInteceptTouchEvent、dispatchTouchEvent、onTouchEvent

说一下我的理解:
onInteceptTouchEvent负责事件拦截
dispatchTouchEvent负责事件分发
onTouchEvent负责事件处理
View只有dispatchTouchEvent、onTouchEvent作用同上。

下面说一下这之间的作用关系:

1.onInteceptTouchEvent,返回boolean,false表示不拦截事件 事件传递到下一级view

2.dispatchTouchEvent ,返回boolean。 true: 表示不往下分发,又自己处理,然后执行onTouchEvent来处理事件(PS:dispatchTouchEvent本身不处理事件); false: 分发事件 事件传递到下一级view

3.onTouchEvent, 处理事件

以上是我的理解,感觉这么解释更好理解,说的不对的地方欢迎留言指正。想要深入研究的同学出门左转大神的博客:http://www.cnblogs.com/linjzong/p/4191891.html

【Android】View的事件分发机制 `dispatchTouchEvent(MotionEvent event)` 方法是事件分发的入口。 - 每当事件产生时(如点击、滑动),系统会将该事件封装成一个 `MotionEvent` 对象,并通过 `dispatchTouchEvent` 方法传递给根视图(通常是 `Activity` 中的 `DecorView`)。 - 在 `dispatchTouchEvent` 中,事件会根据层级逐层传递给子视图,直到找到可以处理事件的视图为止。 - 若 `dispatchTouchEv 阅读详情

相关推荐

解决vscode无法运行npm命令的问题(cmd可行)

Powershell以及vscode中npm命令使用不了

无痕坚守本心的博客 2749

View的事件分发机制

要想控制View对点击事件的响应,就需要了解View的事件分发机制。而View的事件分发机制无非就是研究复写下面三个方法,只要明白它们的作用原理,就可以随心所欲的写出满足自己意愿的交互代码:1.dispatchTouchEvent View有一个方法叫dispatchTouchEvent,这个方法用于进行事件的分发,只要点击事件传到了这个View,那么这个方法就会被调用。 这个方法的伪代码是:p

AndroidConqueror的博客 484

从碰撞电离到雪崩击穿:Sentaurus仿真中的模型选择与验证艺术

本文深入探讨了Sentaurus TCAD中雪崩击穿模型的选取与验证方法,特别关注平行平面结的仿真实践。通过对比Chynoweth、van Overstraeten等主流模型的适用场景与精度差异,结合具体案例展示了从几何建模到边界条件设定的完整验证流程,并针对非理想因素提供了有效的补偿技术,助力工程师提升器件仿真的准确性与可靠性。

weixin_29074295的博客 592

View的事件体系(三)view的事件分发机制

本章开始总结vie事件的分发机制:view的核心知识、view的难点、view的另一大难点滑动冲突解决的理论基础。 一、了解下 安卓的view层级: 其实我们平时在xml中写的view都是通过activity的setContentView被一步步加载到window上的,事件的产生也是首先从activity按照层级往下传递,一直到我们CustomView的最内层布局view,中间传递过程有着事...

dev晴天的博客 2101

第一次面试经历:集创北方数字IC前端面试(崩)总结

时间:2020年8月11日上午10点 公司:集创北方,做LED、LCD、OLED、AMOLED等显示器芯片的公司,应该主要是做显示驱动、图像处理、电源管理等这一块。 岗位:数字IC前端设计 城市:北京 形式:线上面试。感觉我俩是两个社畜,他说摄像头开不开都可以,我说那语音OK吗他说OK,于是直接语音问答。 项目经历:基于FPGA的车牌识别 & 先导存储器集成工艺开发(课题组) & 基于FPGA的贪吃蛇小游戏 反正是凉凉的,这时候准备还不足,前面都在复习项目没怎么刷过题。 过程如下: 自我介绍

coin的博客 6678

从‘数字分身’到‘数字员工’:华为云MetaStudio如何重塑企业生产力?

本文探讨了华为云MetaStudio如何通过数字人技术重塑企业生产力,从数字分身到数字员工的转变。通过多模态AIGC技术,MetaStudio在金融、零售和制造业等多个行业实现高效应用,显著提升服务质量和运营效率。数字员工不仅降低成本,更成为企业增长的新引擎。

weixin_29083475的博客 450

Android 事件分发介绍

Android 中 View 的布局是一个树形结构,各个 ViewGroup 和 View 是按树形结构嵌套布局的,从而会出现用户触摸的位置坐标可能会落在多个 View 的范围内,这样就不知道哪个 View 来响应这个事件,为了解决这一问题,就出现了事件分发机制。

佛祖保佑,永无巴戈。 2543

CGNS快速入门到实战(二):VS配置调用CGNS静态链接库

CGNS快速入门到实战这一系列分成三篇文章展开叙述,具体有:(一)CGNS静态链接库编译;(二)VS配置调用CGNS静态链接库;(三)CGNS文件及案例展示。本篇文章重点讲述VS配置调用CGNS静态链接库。

ahang_99的博客 2616

Android事件分发机制详解:史上最全面、最易懂

点击事件由哪个对象发出,经过哪些对象,最终达到哪个对象并最终得到处理。这里的对象是指Activity、ViewGroup、View事件分发过程由dispatchTouchEvent() 、onInterceptTouchEvent()和onTouchEvent()三个方法协助完成经过上述3个问题,相信大家已经对Android的事件分发有了感性的认知,接下来,我将详细介绍Android事件分发机制。

w1142203475的博客 1万+

基于FreeRedis实现的.NET Redis客户端缓存缓存键条件优雅过滤

在.NET开发中,使用Redis作为缓存解决方案是很常见的。FreeRedis是一个功能强大的Redis客户端库,它提供了丰富的功能和灵活性,使我们能够轻松地与Redis进行交互。在本文中,我们将探讨如何使用FreeRedis实现缓存键条件的优雅过滤,以提高缓存的效率和准确性。

RzuScala的博客 328

为什么 ADT 在 SAP BTP ABAP environment 里认证成功却无法登录 Service Instance:根因拆解与一站式修复路线

摘要 ADT报错"认证成功但Service Instance登录失败"通常源于ABAP租户的权限或用户映射问题,而非账号密码错误。常见原因包括:1) ABAP租户内未创建对应业务用户;2) 业务用户缺少开发角色(如SAP_BR_DEVELOPER);3) BTP角色集合未分配或IdP组映射缺失;4) 浏览器会话混淆身份;5) 连接了非开发租户(如Customizing Tenant);6) 实例休眠导致误判。 解决方法:检查ABAP业务用户及角色分配,确认BTP角色集合映射,使用隐身窗口

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 253

View的事件分发机制总结

事件的传递规则:对于一个根ViewGroup来说,点击事件产生后,首先会传递给它,这时它的dispatchTouchEvent就会被调用,如果这个ViewGroup的onInterceptTouchEvent方法返回true就表示它要拦截当前事件,接着事件就会交给这个ViewGroup处理,即它的onTouchEvent方法就会被调用:如果这个ViewGroup的onInterceptTouchEv

一步一个脚印 612

代谢组数据分析(二十四):基于tidymass包从质谱原始数据到代谢物注释结果的实践指南

本教程介绍了如何使用 R 语言中的 tidymass 包进行代谢组学数据分析。tidymass 是一个专为液相色谱-质谱(LC-MS)数据设计的开源工具,提供从数据准备到统计分析的全流程支持。教程详细讲解了数据准备、数据处理、数据探索、数据清洗、代谢物注释、统计分析及结果输出的步骤。用户需准备 MS1、MS2 数据和样本信息表,并通过 tidymass 进行峰识别、峰分组、保留时间校正等操作。数据处理后,用户可进行数据探索、清洗和代谢物注释,最终通过统计分析发现潜在的生物标志物,并输出结果。教程还提供了代码

专注生信领域 1635

Android中的事件分发机制简述

Android的事件分发机制是处理用户触摸(Touch)事件在View层级中传递、消耗的核心机制,其流程可概括为从Activity到ViewGroup,再到View的三层传递,最终由合适的View消费事件。以下是关键流程和核心方法:事件从Activity开始,通过ViewGroup层层传递,最终到达叶子节点View,若未被消费则原路返回。 2. ViewGroup → 子View 3. View处理事件 四、关键规则 事件传递顺序: → → 。 拦截规则: ViewGroup可通过拦截事件,一旦拦

分享技术和日常 419

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Android 简述事件分发机制

ViewGroup有三个方法: Touch 事件相关方法 方法功能 标记 dispatchTouchEvent(MotionEvent ev) 事件分发 1 onInterceptTouchEvent(MotionEvent ev) 事件拦截 2 onTouchEvent(MotionEvent ev) 处理事件 3 这样,ViewGroup和View对

jingbin_的博客 1650

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

android 事件分发机制概述

Touch 事件相关方法 方法功能 ViewGroup Activity,view public boolean dispatchTouchEvent(MotionEvent ev) 事件分发 Yes Yes public boolean onInterceptTouchEvent(MotionEvent...

一年又一年。的专栏 302

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Android事件分发机制综述

前言 Android事件分发机制可以说是我们Android工程师面试题中的必考题,弄懂它的原理是我们避不开的任务,所以长痛不如短痛,花点时间干掉他,废话不多说,开车啦 Android事件分发机制的简介 Android事件分发机制的发生在View与View之间或者ViewGroup与View之间具有镶嵌的视图上,而且视图上必须为点击可用。当一个点击事件产生后,它的传递过程遵循如下顺序:Activi...

qq_32534441的博客 1964

Android事件分发机制详解

理解事件分发机制,一定要记住下面这几个方法: public boolean dispatchTouchEvent(MotionEvent ev); //用来分派event public boolean onInterceptTouchEvent(MotionEvent ev); //用来拦截event public boolean onTouchEvent(MotionEvent ev);

vanpersie_9987的博客 443

源码分析安卓事件分发机制的流程

1、Activity---dispatchTouchEvent(MotionEvent ev)----这是APP的点击事件入口,用户的点击操作都是从activity的dispatchTouchEvent方法开始的。 某个activity MainActivity @Override public boolean dispatchTouchEvent(MotionEvent ev) {...

qiantanlong的博客 244

事件分发机制原理

https://blog.youkuaiyun.com/carson_ho/article/details/54136311                    Android事件分发机制 详解攻略,您值得拥有https://www.cnblogs.com/Jason-Jan/p/8448277.html1.基础认知1.1.事件分发的对象是谁?    答:事件。    当用户触摸屏幕时(View或ViewG...

wenxustqiang 241

Android面试收集录6 事件分发机制

转自:秋招面试宝典。 一、 基础认知 1.1 事件分发的对象是谁? 答:事件 当用户触摸屏幕时(View或ViewGroup派生的控件),将产生点击事件(Touch事件)。 Touch事件相关细节(发生触摸的位置、时间、历史记录、手势动作等)被封装成MotionEvent对象 主要发生的Touch事件有如下四种: MotionEvent.ACTI...

SFC0511的博客 623

【Android】事件分发机制

从上表可以看到 Activity和 View都是没有事件拦截的,这是因为:Activity 作为原始的事件分发者,如果 Activity 拦截了事件会导致整个屏幕都无法响应事件,这肯定不是我们想要的效果。View作为事件传递的最末端,要么消费掉事件,要么不处理进行回传,根本没必要进行事件拦截。

2303_79296612的博客 1726

Android ——事件分发机制

用户在使用app时,会经常频繁的触摸屏幕,点击页面交互,打开需要的功能。用户触摸点击的动作,就涉及到app中相关UI的触摸和点击事件。事件在UI中传递和处理的过程,就是事件分发流程。发生一次点击事件时,事件会按照Activity->ViewGroup->View的顺序,进行事件传递。

qq_45730283的博客 2220
上一篇: ViewPager嵌套事件冲突问题(dispatchTouchEvent)
下一篇: ViewPager绑定ViewPagerIndicator时onPageChangeListener监听不到的问题
Z漫步
博客等级 码龄12年 42粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值