Android 事件分发机制

本文详细解析了Android系统的触控事件分发机制,包括事件如何从顶层View传递到底层View,以及不同类型的触控事件(如点击、长按等)是如何触发的。还介绍了在不同条件下,View和ViewGroup如何处理这些事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android 事件分发机制

1.Activity的最顶层的Window是PhoneWindow,Android的最外层嵌套了一个FrameLayout用来包含整个手机的布局,可以在DDMS下用工具能够查看的到,Android截屏的原理是获取到Acitivty的最外层的View的cacheBitmap然后通过画布处理到文件,最外层的View是DecorView.。

2.一个Clickable与LongClickable永远都会消费Touch事件,不管它是diaable还是Disable。

3.View的长按事件是在ACTION_DOWN中执行的,要想执行View的LongClick事件,View的LongClickable必须为True,而且 一定不能执行View的ACTION_MOVE。

4View的点击事件是在ACTION_UP中执行,要想执行Click事件的前提是执行了ACTION_DOWN和ACTION_MOVE,并且没有设置LongClick的情况下,如果设置了Longclick,则longClick必须返回False。

5.如果VIew设置了OnTOuchListener,并且onTouch返回True,则不执行View的OnTouchEvent,即表示了VIew消费了Touch事件,返回Flase则继续执行onTouchEvent()。

6,Touch事件是从最顶层的View分发到最里层的View,如果最里层的VIew消费了ACTION_DOWN事件(设置了OnTouchListener,并且Ontouch()返回的是Ture或者OnTOuchEvent返回的是True)才会触发ACTION_UP与ACTION_MOVE,如果某个VIewGroup拦截了Touch事件,则Touch事件交给ViewGroup处理。

7.Touch事件的分发过程中,如果消费了ACTION_DOWN,而在分发ACTION_MOVE的时候交给了被VIewGroup拦截了,则会将ACTION_CANCEL分发给该ViewGroup下面的Touch到的View,然后将Touch事件交给ViewGroup处理,并返回true



相关:

1.hierarchyviewer查看VIew的布局结构图就能发现最外层嵌套了的FramLayout,最顶层的VIew是DecorView,DecorView下面有一个LinearLayout,LinearLayout嵌套了两个FramLayout,上面的一个是 用来绘制标题栏的,下面的是用户交互的界面,也就是我们setContentView里面的那个View

2.VIew的diapatchTouchEvent(),在源码里面判断了执行的条件

2.1mOnCLickListener不为null,也就是我们设置了View的OnClickLitener

2.2View是否为Enable 这个默认的是able的,除非是手动设置View的Click为diaable

2.3 第三个是View的onTouchListener接口的Ontouch方法的返回值,如果调用了View.setOnTouchListener 的OntouchListener,并且onTouch返回True,VIew的diapatchTouchEvent 就直接返回True,否则就执行View的OntouChEvent 并返回View的OntouchEvent()

3.Touch事件是从顶层的View一直往下分发到手指按下的最里面的View,如果这个View的onTouchEvent()返回false,即不消费Touch事件,这个Touch事件就会向上找父布局调用其父布局的onTouchEvent()处理,如果这个View返回true,表示消费了Touch事件,就不调用父布局的onTouchEvent()



转载自:http://blog.youkuaiyun.com/xiaanming/article/details/21696315


内容概要:本文介绍了基于Python实现的SSA-GRU(麻雀搜索算法优化门控循环单元)时间序列预测项目。项目旨在通过结合SSA的全局搜索能力和GRU的时序信息处理能力,提升时间序列预测的精度和效率。文中详细描述了项目的背景、目标、挑战及解决方案,涵盖了从数据预处理到模型训练、优化及评估的全流程。SSA用于优化GRU的超参数,如隐藏层单元数、学习率等,以解决传统方法难以捕捉复杂非线性关系的问题。项目还提供了具体的代码示例,包括GRU模型的定义、训练和验证过程,以及SSA的种群初始化、迭代更新策略和适应度评估函数。; 适合人群:具备一定编程基础,特别是对时间序列预测和深度学习有一定了解的研究人员和技术开发者。; 使用场景及目标:①提高时间序列预测的精度和效率,适用于金融市场分析、气象预报、工业设备故障诊断等领域;②解决传统方法难以捕捉复杂非线性关系的问题;③通过自动化参数优化,减少人工干预,提升模型开发效率;④增强模型在不同数据集和未知环境中的泛化能力。; 阅读建议:由于项目涉及深度学习和智能优化算法的结合,建议读者在阅读过程中结合代码示例进行实践,理解SSA和GRU的工作原理及其在时间序列预测中的具体应用。同时,关注数据预处理、模型训练和优化的每个步骤,以确保对整个流程有全面的理解。
内容概要:本文档详细介绍了一个基于冠豪猪优化算法(CPO)优化反向传播神经网络(BP)并结合核密度估计(KDE)的多变量回归预测项目。项目旨在解决多变量回归预测中的非线性建模与参数优化瓶颈,通过CPO算法优化BP网络权重和偏置参数,显著提升训练过程的全局搜索能力和预测准确率。同时,利用KDE进行残差分布建模,实现对预测结果的概率密度估计和误差分析。项目涵盖了数据预处理、模型设计、参数优化、误差建模与性能评估等全流程,形成了一个系统化的多变量回归预测解决方案,适用于工业制造、金融分析、环境监测和医疗健康等多个领域。 适合人群:具备一定编程基础,对机器学习特别是神经网络和优化算法有一定了解的研发人员和数据科学家。 使用场景及目标:①提升多变量回归预测准确性,特别是在处理复杂非线性数据时;②加速神经网络训练收敛速度,提高模型的实时响应能力;③实现预测误差的概率密度估计,为决策提供风险评估支持;④增强模型的鲁棒性和泛化能力,确保在不同数据环境下保持稳定输出;⑤推动群智能优化算法在神经网络训练中的应用,探索其在多变量回归任务中的具体效果;⑥支持跨领域复杂系统的智能预测需求,满足不同行业对高精度智能预测和决策支持的要求。 其他说明:项目提供了详细的模型架构和技术实现步骤,包括Python代码示例,帮助用户理解和实践基于CPO-BP-KDE的多变量回归预测模型。项目强调了CPO算法的全局优化能力、BP神经网络的强拟合能力以及KDE的误差概率建模能力,确保模型在实际应用中的高效性和可靠性。此外,项目还讨论了如何应对多变量回归任务中的挑战,如非线性建模、参数选择、计算复杂度和模型解释性等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值