详解Android Touch事件的传递机制

1、基础知识

(1) 所有Touch事件都被封装成了MotionEvent对象,包括Touch的位置、时间、历史记录以及第几个手指(多指触摸)等。

 

(2) 事件类型分为ACTION_DOWN, ACTION_UP, ACTION_MOVE, ACTION_POINTER_DOWN, ACTION_POINTER_UP, ACTION_CANCEL,每个事件都是以ACTION_DOWN开始ACTION_UP结束。

 

(3) 对事件的处理包括三类,分别为传递——dispatchTouchEvent()函数、拦截——onInterceptTouchEvent()函数、消费——onTouchEvent()函数和OnTouchListener

 

2、传递流程

(1) 事件从Activity.dispatchTouchEvent()开始传递,只要没有被停止或拦截,从最上层的View(ViewGroup)开始一直往下(子View)传递。子View可以通过onTouchEvent()对事件进行处理。

 

(2) 事件由父View(ViewGroup)传递给子View,ViewGroup可以通过onInterceptTouchEvent()对事件做拦截,停止其往下传递。

 

(3) 如果事件从上往下传递过程中一直没有被停止,且最底层子View没有消费事件,事件会反向往上传递,这时父View(ViewGroup)可以进行消费,如果还是没有被消费的话,最后会到Activity的onTouchEvent()函数。

 

(4) 如果View没有对ACTION_DOWN进行消费,之后的其他事件不会传递过来。

 

(5) OnTouchListener优先于onTouchEvent()对事件进行消费。

 

上面的消费即表示相应函数返回值为true。

 

更多请直接阅读PDF英文原文:Mastering the Android Touch System,示例代码:Demo@Github。有什么问题可以这里留言。

 

附上两张原文中流程图

(1) View不处理事件流程图

view-ignore-touch-event-example

view-ignore-touch-event-example

 

(2) View处理事件流程图

view-process-touch-event-example

view-process-touch-event-example

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464364.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目专访|在ESP32上移植Linux

大家好,我是写代码的篮球球痴,最近在网上看到一个非常有意思的项目,有大神把Linux内核移植到ESP32上,并成功运行。在国外网站上,有很多人在议论这件事情https://hackaday.com/2021/07/21/its-linux-but-on-an-esp32/ES…

4.3英寸屏双核 LG Prada K2通过FCC认证

我们此前曝光过一款型号为LG Prada K2的智能手机,这款手机不仅配置出色而且外观极为时尚。如今,来自国外媒体的最新消息显示,LG Prada K2已经通过FCC认证,这意味着它距离上市已经为期不远。 LG Prada K2通过FCC认证 LG Prada K2是…

国内MCU厂商也开始卷了

最近我大学老师准备做一个项目,需要用到STM32的芯片,然后我就帮忙着一起找,不找不知道,找了才知道这个东西真的是贵。然后我就看了GD32,不了解不知道,这个东西也是真的贵。然后我又去看的MM32,结…

Google Flash转换HTML5工具Swiffy测试版发布

Google今年六月推出的Flash转换HTML5工具已经从实验室转为测试版,并新增一个Flash Professional扩充模组,可以直接将档案储存为HTML5格式。一开始Swiffy仅以网站方式,让使用者上传Flash的.swf档案,支持Flash所使用的swf 8格式与Ac…

什么是MCU里应尽量遵循的寄存器谨慎赋值法?

有人觉得搞MCU是一件简单的事情,往往觉得简单的事反而出错更多,今天转发一篇我朋友痞子衡的文章,说说MCU里面的寄存器的事。大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是改动i.MXRT1xxx里IOMUXC_G…

惠普电脑如何下载c语言软件,惠普笔记本电脑上的语言栏怎么弄

满意答案mygood12f32013.01.23采纳率:53% 等级:11已帮助:6723人首先运行“regedit”,展开“HKEY_CURRENT_USER/keyboard layout/preload”分支,在其下新建一个字符串值,命名为“1”,并将它对…

单件模式(Singleton Pattern)

1、单件模式试用与窗口管理器或者是打印假脱机、数据库连接池;2、目的:在单独得对象实例中,集中了这个对象所属类得所有权利;3、DoNet解决方案 public class DotNetSigleton { private static readonly DotNetSiglet…

LeetCode:二进制手表【401】

LeetCode:二进制手表【401】 题目描述 二进制手表顶部有 4 个 LED 代表小时(0-11),底部的 6 个 LED 代表分钟(0-59)。 每个 LED 代表一个 0 或 1,最低位在右侧。 例如,上面的二进制手…

反馈电路中相位补偿,到底是什么鬼?

帮朋友做镍氢充电器,利用镍氢电池充满电时电压有一个微小的下降这个特点来识别是否已经充满,比如1.2V的镍氢电池,快充满的时候,电压在1.35V,之后逐步下降,电压可以低于1.30V。所以需要单片机间歇检测电池两…

RoseHA集群:RHEL+RoseMirror+Oracle【2】

博主正在参加“2011年度IT博客大赛”,欢迎帮顶! 投票地址 --------------------------------------------- 三.安装Rose Mirror HA:准备工作:在安装 Rose Mirror HA 前检查相应的软件包是否安装,如果没有安…

c语言笔试面试面试题,最新华为c语言笔试面试题

最新华为c语言笔试面试题本文是百分网小编搜索整理的一份最新华为c语言笔试面试题,有需要的朋友们一起看看吧!想了解更多相关信息请持续关注我们应届毕业生考试网!1、局部变量能否和全局变量重名答:能,局部会屏蔽全局。要用全局变量&#xff…

【项目管理】CMMI-需求跟踪矩阵模版

需求菜单/功能模块需求名称需求变更类型(新增、修改)需求状态(已建议、已批准、已设计、已实现、已验证、已删除)优先级(高、中、低)软件需求(工作产品、章节号)概要设计&#xff08…

嵌入式工程师薪资调查

大家好,嵌入式行业薪资一直是大家关心的问题,刚好我的好朋友发起了一个调查,大家可以匿名写下自己的薪资,也可以看看其他的薪资水平。3月4月份确实是找工作的好机会,求职和跳槽最好的月份要来了吗 ,最近看到…

在STM32单片机上跑神经网络算法

摘要:为什么可以在STM32上面跑神经网络?简而言之就是使用STM32CubeMX中的X-Cube-AI扩展包将当前比较热门的AI框架进行C代码的转化,以支持在嵌入式设备上使用,目前使用X-Cube-AI需要在STM32CubeMX版本5.0以上,支持转化的…

CF Edu54 E. Vasya and a Tree DFS+树状数组

Vasya and a Tree 题意: 给定一棵树,对树有3e5的操作,每次操作为,把树上某个节点的不超过d的子节点都加上值x; 思路: 多开一个vector记录每个点上的操作。dfs这颗树,同时以深度开一个树状数组,踩…

通信教程 | 串口丢数据常见的原因

UART:Universal Asynchronous Receiver / Transmitter,通用异步收发传输器,即我们通常说的串口。串口是工程师最常用的串行外设之一,但在实际应用中还是会经常遇到各种问题。比如:丢失一字节数据。今天我们就结合STM32…

三次握手 四次握手 与socket函数的关系

我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket&am…

110-简单类型之整数类型和小数类型

简单类型-整数 简单类型-小数 float myFloat12.5f;转载于:https://www.cnblogs.com/wuxiaohui1983/p/9965493.html

看了2022华为春季发布会

我之前在一家智能家居的公司干过,而且我是从0开始做的,所以对这个行业多少还是有点了解,我从技术人角度看一下这场发布会。看到了智能家居的几个产品,然后再想起来我们之前做的东西,嗯,感觉我们做的提前做了…

你们还在用8位单片机吗?

工作这些年,一种从事嵌入式相关的工作,大部分接触的是ARM芯片,不过也有接触到8位单片机的机会,在一些控制领域,8位单片机还是有自己的用武之地的,大家也来说一说,自己还有接触到8位单片机吗&…