技术标签: 安卓 移动开发(AndroidStudio) android 软件工程
Android 的事件分发流程是一个从顶至底的层级传递过程,涉及 Activity、ViewGroup 和 View。这个流程确保了触摸事件(如屏幕触摸操作)能够被正确地处理和响应。我们将首先概括一下一次事件触发的整个流程,再逐一对其中的细节进行分别介绍:
dispatchTouchEvent()
方法开始处理。dispatchTouchEvent()
同样被调用。onInterceptTouchEvent()
方法。如果 ViewGroup 拦截了事件(返回 true),则事件不再向下传递,而是交由 ViewGroup 的 onTouchEvent()
方法处理。onInterceptTouchEvent()
返回 false),事件将继续传递给它的子视图。dispatchTouchEvent()
。onTouchEvent()
方法处理这个事件。onTouchEvent()
返回 false),事件会回溯到它的父 ViewGroup,以此类推,直到找到能处理这个事件的视图。onTouchEvent()
方法处理并消费(方法返回 true),事件分发流程结束。这个视图成为了该触摸序列(如一次点击或滑动操作)的消费者,后续的事件(如触摸移动或抬起)也会直接分发给这个视图。这个流程确保了 Android 应用可以灵活处理用户的触摸输入,同时也提供了多个层级对事件进行截获和响应的能力。
接下来我们将分别对InputManager、事件对象、涉及的方法以及事件类型逐一进行详细讲解。
InputManager 在 Android 系统中是一个核心的服务组件,负责管理和分发从各种输入设备(如触摸屏、键盘、鼠标等)来的输入事件。Android 的输入系统架构中处于较为底层的位置,它不仅负责将输入事件从硬件传递到应用,还处理了输入事件的多种复杂场景它在,主要功能和特点包括:
在Android中,事件分发机制主要涉及三个层级的对象:Activity、ViewGroup和View。它们的主要区别如下:
在Android的事件分发过程中,主要涉及以下几个方法:
ACTION_DOWN
(按下)、ACTION_MOVE
(移动)、ACTION_UP
(抬起)、ACTION_CANCEL
(取消)等。ACTION_DOWN
(按键按下)和 ACTION_UP
(按键释放),以及 ACTION_MULTIPLE
(多个连续的按键动作)。文章浏览阅读1.9k次。在info.plist文件中加一条Appearance - Light, 如下图:参考博客:iOS暗黑(dark)模式适配IOS 开发之关闭暗黑模式_ios开发 关闭对黑暗模式的支持
文章浏览阅读1.1k次。目的包括PMS及以后的Swift项目在多人开发中,即使有官网的规范模板,每个人的代码风格和规范难以做到完全一致,对后期项目维护会增加一定的困难。使用SwiftLint可以对规范代码有很大帮助。SwiftLint是啥SwiftLint是Realm公司开发的一个插件,专门用于管理Swift代码的规范,能够对原有的代码自动格式化,在 Xcode 中执行编译时,SwiftLint 会自动运行检查,不符合规范的代码会通过警告或者报错的形式指示出来,并且拥有丰富的配置项,可以进行大量的自定义规范操作,是一个很方_swiftlint
文章浏览阅读618次。tomcat源码阅读1org.apache.catalina 包包内接口主要有:AuthenticatorAuthenticator 是一个组件(通常是一个阀门或容器),它提供了这类服务的身份验证Cluster一个Cluster 像一个当地客户服务器集群那样工作,它的实现需要支持集群内的多种交流方式Contained它是一个解耦接_myeclipse怎么查看tomcat源码
文章浏览阅读2.6k次。负责公司的基础数据扫描采集.这部分对于系统的可用性基本是100%所以做了很多高可用的方案前置准备在对APP进行高可用实施之前,我们需要准备:1.核心域名多个降级[一主多备]最基础的要求,必须!!!能够支持云端下发 & 本地动态切换(蓝-绿发布 & 灰度 & UAT)2.多个CDN每个域名 都使用不同CDN,避免因CDN节点故障导致服务不可用(出现过因CDN节点异常的生产故障)3.多个部署网络机房每个域名 部署在不同地域网络机房(出现过主干线因施工被挖断的生产._一个app要连多个域名灾备吗
文章浏览阅读1.4w次。原因是U盘的文件系统损坏,操作系统为了防止进一步毁坏文件系统,而将其设置成了只读。Ubuntu系统下,U盘突然只能读取无法写入。_ubuntu系统硬盘变只读的原因
文章浏览阅读232次。本文介绍elasticsearch的从mysql导入数据文章目录0. 数据准备1. 下载并安装logstash1.1 下载地址1.2 安装2. 配置文件2.1 下载jdbc包2.2 更改配置文件3. 启动5. 查询0. 数据准备create database shopdbCREATE TABLE `goods` ( `id` int(11) unsigned NOT NULL A..._logstash unable to get charset
文章浏览阅读595次。git clone -b 分支名称 克隆地址_从分支克隆代码
文章浏览阅读8.2k次。系统是win7 x64python 2.7.6的site.py里面编码设定为 utf-8py文件首行指定 #coding:utf-8mysql 5.5.38安装时指定代码为utf-8peewee的连接数据库代码为:db = MySQLDatabase(host = '127.0.0.1', user = 'root', passwd = '1', database = _peewee 生成 文件乱码
文章浏览阅读3.6k次,点赞2次,收藏12次。为了解决RNN的长时依赖的问题。RNN无法保存较长的时间的信息,因为梯度消失问题。LSTM引入了门控单元的机制,也就是添加了C这条通路,使得可以较长长时间保存信息。LSTM单元(unit)一般由一个细胞(cell),一个输入门 (inputgate),一个输出门(outputgate)和一个遗忘门 (forgetgate)组成. •细胞能够记住任意时间间隔上的值,三个门能够控制进出细胞的 信息流动。引入了“门”机制对细胞状态信息进行添加或删除,实现长时记忆。•“门”机制由一个Sigmoid激活函数_lstm输出维度和输入维度相同
文章浏览阅读3.2k次。(9+条消息)对颜色空间YUV、RGB的理解 - 一条肥鱼的博客 - 程序员宅基地 https://blog.csdn.net/asahinokawa/article/details/80596655YUV(亦称YCrCb)是被欧洲电视系统所采用的一种颜色编码方法(属於PAL)。YUV主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只需占..._yuv格式是什么意思
文章浏览阅读3.8k次,点赞5次,收藏32次。文章目录1. 关于kitti数据集以及坐标系2. 关于bin格式点云的存储方式3. 点云拼接前言:这段时间在学习坐标系变换相关的知识,同时尝试了利用kitti公开点云数据集以及对应的真实位姿,拼接出全局地图,如下图所示,我采用了kitti点云数据集的00序列来测试拼接地图。下面大致记录下点云拼接过程以及基于C++和Matlab的拼接代码,备忘。1. 关于kitti数据集以及坐标系kitti数..._semantickitti点云拼接
文章浏览阅读3.7k次。环境Ubuntu除了要配置访问权限以外,还需要将运行环境配置修改下:命令:vi/etc/rabbitmq/rabbitmq-env.conf# Defaults to rabbit. This can be useful if you want to run more than one node# per machine - RABBITMQ_NODENAME shoul..._springboot连不上rabbitmq