`
ipjmc
  • 浏览: 711597 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

onInterceptTouchEvent和onTouchEvent调用时序

阅读更多
        onInterceptTouchEvent()是ViewGroup的一个方法,目的是在系统向该ViewGroup及其各个childView触发onTouchEvent()之前对相关事件进行一次拦截,Android这么设计的想法也很好理解,由于ViewGroup会包含若干childView,因此需要能够统一监控各种touch事件的机会,因此纯粹的不能包含子view的控件是没有这个方法的,如LinearLayout就有,TextView就没有。
onInterceptTouchEvent()使用也很简单,如果在ViewGroup里覆写了该方法,那么就可以对各种touch事件加以拦截。但是如何拦截,是否所有的touch事件都需要拦截则是比较复杂的,touch事件在onInterceptTouchEvent()和onTouchEvent以及各个childView间的传递机制完全取决于onInterceptTouchEvent()和onTouchEvent()的返回值。并且,针对down事件处理的返回值直接影响到后续move和up事件的接收和传递。

        关于返回值的问题,基本规则很清楚,如果return true,那么表示该方法消费了此次事件,如果return false,那么表示该方法并未处理完全,该事件仍然需要以某种方式传递下去继续等待处理。
SDK给出的说明如下:
        ·  You will receive the down event here.
        ·  The down event will be handled either by a child of this view group, or given to your own onTouchEvent() method to handle; this means you should implement onTouchEvent() to return true, so you will continue to see the rest of the gesture (instead of looking for a parent view to handle it). Also, by returning true from onTouchEvent(), you will not receive any following events in onInterceptTouchEvent() and all touch processing must happen in onTouchEvent() like normal.
        ·  For as long as you return false from this function, each following event (up to and including the final up) will be delivered first here and then to the target's onTouchEvent().
        ·  If you return true from here, you will not receive any following events: the target view will receive the same event but with the action ACTION_CANCEL, and all further events will be delivered to your onTouchEvent() method and no longer appear here.

        由于onInterceptTouchEvent()的机制比较复杂,上面的说明写的也比较复杂,总结一下,基本的规则是:
        1.down事件首先会传递到onInterceptTouchEvent()方法
        2.如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后return false,那么后续的move, up等事件将继续会先传递给该ViewGroup,之后才和down事件一样传递给最终的目标view的onTouchEvent()处理。
        3.如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后return true,那么后续的move, up等事件将不再传递给onInterceptTouchEvent(),而是和down事件一样传递给该ViewGroup的onTouchEvent()处理,注意,目标view将接收不到任何事件。
        4.如果最终需要处理事件的view的onTouchEvent()返回了false,那么该事件将被传递至其上一层次的view的onTouchEvent()处理。
        5.如果最终需要处理事件的view 的onTouchEvent()返回了true,那么后续事件将可以继续传递给该view的onTouchEvent()处理。

原文链接:http://blog.csdn.net/ddna/article/details/5473293
分享到:
评论

相关推荐

    android事件2-onInterceptTouchEvent和onTouchEvent调用时序

    在Android开发中,理解和掌握`onInterceptTouchEvent`与`onTouchEvent`的调用时序至关重要,因为它们是实现触摸事件处理的关键。这两个方法都属于Android的触摸事件处理机制,涉及到了ViewGroup与子View之间的事件...

    Android中touch事件传递测试demo

    onInterceptTouchEvent和onTouchEvent调用时序详解 测试demo 详细介绍请移步:http://blog.csdn.net/yiranxinshou/article/details/9201833

    Touch事件案例

    "Touch事件案例"主要关注的是`onInterceptTouchEvent`和`onTouchEvent`这两个方法的调用时序,它们是处理触摸事件的关键组件,尤其在复杂的布局结构中,理解它们的工作原理对于优化用户界面和交互至关重要。...

    MATLAB自定义函数,移动平均(Moving Average)、Savitzky-Golay滤波(SG滤波) 和 邻域平均滤波(Adjacent Averaging) 算法三种算法实现

    以下是对移动平均(Moving Average)、Savitzky-Golay滤波(SG滤波) 和 邻域平均滤波(Adjacent Averaging) 算法实现信号处理。移动平均 vs. 邻域平均:二者数学本质相同,均为窗口内均值计算。差异仅在于实现时的命名习惯(如“邻域平均”更强调局部邻域操作)。 SG滤波:基于最小二乘多项式拟合,通过保留高阶导数信息(如峰形曲率)实现高保真平滑。 选择移动平均/邻域平均: 实时性要求高(如传感器数据流处理)。 信号特征简单,无需保留高频细节(如温度趋势分析)。 对实时性要求高或噪声简单,可用移动平均。 选择SG滤波: 信号峰形关键(如FBG中心波长检测),优先选SG滤波。 光谱分析、色谱峰检测等需保留峰形特征的场景。 信号含复杂高频成分但需抑制随机噪声(如ECG信号去噪)。 边缘处理策略 镜像填充('symmetric'):减少边界突变,适合多数信号。 常数填充('constant'):适合信号首尾平稳的场景。 截断处理:输出数据变短,适合后续插值。

    FreeRTOS-KEY调用挂起和恢复.zip

    基于STM32F1系列FreeRTOS的移植使用 详细移植过程可以参考: FreeRTOS实战(二)章节:https://blog.csdn.net/manongdky/category_12968613.html?spm=1001.2014.3001.5482

    【MATLAB时间序列预测】MATLAB实现PSO-ELM粒子群优化算法(PSO)优化极限学习机(ELM)时间序列预测的详细项目实例(含模型描述及示例代码)

    内容概要:本文档详细介绍了如何使用MATLAB实现粒子群优化算法(PSO)优化极限学习机(ELM)进行时间序列预测的项目实例。项目背景指出,PSO通过模拟鸟群觅食行为进行全局优化,ELM则以其快速训练和强泛化能力著称,但对初始参数敏感。结合两者,PSO-ELM模型能显著提升时间序列预测的准确性。项目目标包括提高预测精度、降低训练时间、处理复杂非线性问题、增强模型稳定性和鲁棒性,并推动智能化预测技术的发展。面对数据质量问题、参数优化困难、计算资源消耗、模型过拟合及非线性特征等挑战,项目采取了数据预处理、PSO优化、并行计算、交叉验证等解决方案。项目特点在于高效的优化策略、快速的训练过程、强大的非线性拟合能力和广泛的适用性。; 适合人群:对时间序列预测感兴趣的研究人员、数据科学家以及有一定编程基础并希望深入了解机器学习优化算法的工程师。; 使用场景及目标:①金融市场预测,如股票走势预测;②气象预报,提高天气预测的准确性;③交通流量预测,优化交通管理;④能源需求预测,确保能源供应稳定;⑤医疗健康预测,辅助公共卫生决策。; 其他说明:文档提供了详细的模型架构描述和MATLAB代码示例,涵盖数据预处理、PSO优化、ELM训练及模型评估等关键步骤,帮助读者全面理解和实践PSO-ELM模型。

    线描城市教学课件素材模板.pptx

    线描城市教学课件素材模板

    前端水印方案:Vue3SVG的防截图实现.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Vue 3是一款备受瞩目的JavaScript框架,它采用了基于Proxy的响应式系统,显著提升了性能和调试能力。其Composition API带来了更高效的逻辑组织方式,使代码复用变得轻而易举。Tree-shaking支持让打包后的文件体积更小,进一步优化了应用性能。Vue 3还与TypeScript深度集成,提供了更完善的类型推导,让开发过程更加顺畅。无论是构建大型应用还是小型项目,Vue 3都能凭借其出色的性能和灵活的架构,帮助开发者高效完成任务,是现代Web开发的理想选择。

    手绘卡通汽球儿童教学课件素材模板.pptx

    手绘卡通汽球儿童教学课件素材模板

    COMSOL环境下圆偏振光与偏振转换技术的理论与实践探究

    内容概要:本文深入探讨了COMSOL环境中圆偏振光与偏振转换技术的应用。首先介绍了圆偏振光的概念及其在多个科学和技术领域的重要意义,如光学仪器、量子计算和生物医学。接着阐述了偏振转换的原理及其广泛应用,特别是在光学仪器、通信和显示技术方面。最后,通过具体案例展示了如何利用COMSOL进行圆偏振斜入射的模拟与分析,包括建模、参数设定、模拟运行及结果解读,揭示了不同条件下偏振转换的效果。 适合人群:对光学仿真有兴趣的研究人员、工程师及高校学生。 使用场景及目标:①理解圆偏振光的基础理论;②掌握偏振转换的技术原理;③学会使用COMSOL进行相关仿真实验。 阅读建议:本文提供了详细的理论背景和实践指导,建议读者先熟悉基本概念再逐步深入到具体的模拟操作中,以便更好地掌握所学知识并在实践中加以运用。

    深度学习Python实现基于KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测的详细项目实例(含模型描述及示例代码)

    内容概要:本文介绍了基于KOA-CNN-BiLSTM的深度学习模型在数据分类预测中的应用。该模型结合了卷积神经网络(CNN)和双向长短期记忆网络(BiLSTM),以高效提取空间和时序特征。为了解决传统CNN和LSTM的局限性,项目引入了Kepler算法进行参数优化,提升了模型的收敛速度和预测精度。项目通过优化模型结构、采用数据增强与正则化技术、引入Kepler算法解决了模型训练复杂度高、过拟合和参数优化困难等问题。文中还展示了模型的具体架构及其在多个领域的应用潜力,并提供了详细的代码示例。 适合人群:具备一定机器学习和深度学习基础的研发人员,尤其是对CNN、LSTM及优化算法感兴趣的从业者和研究人员。 使用场景及目标:① 提升数据分类与预测任务的准确率和效率;② 应用于金融、医疗、自然语言处理、物流与交通、环境监测等领域;③ 掌握结合CNN和BiLSTM的多模态特征提取方法;④ 学习Kepler算法在深度学习模型中的应用。 阅读建议:读者应具备一定的深度学习基础,重点理解CNN与BiLSTM的结合方式及Kepler算法的作用机制。建议结合代码示例进行实践,以便更好地掌握模型的设计与实现。

    【MATLAB例程】二维卡尔曼滤波的完整代码,仿真程序,线性系统的卡尔曼滤波(KF),带有误差统计与输出

    该代码提供了一个完整的二维卡尔曼滤波实现,涵盖了从初始化、状态更新到结果可视化的全过程。适合用于学习卡尔曼滤波的基本原理和实际应用。

    【大数据处理】Hadoop数据倾斜成因分析与综合解决方案:从预处理到任务参数调优全流程解析

    内容概要:文章深入剖析了Hadoop数据倾斜的原因及解决方案。数据倾斜主要源于数据分布不均衡、Key的Hash分布不均、业务特性或操作设计问题以及输入文件特性四个方面。针对这些问题,文中提出了涵盖预处理、Map、Shuffle、Reduce阶段及特定场景的多种优化措施。 适用人群:从事大数据开发、运维的技术人员,尤其是对Hadoop有一定了解并遇到数据倾斜问题的工程师; 使用场景及目标:①帮助技术人员识别数据倾斜现象,如任务进度停滞、节点OOM等;②提供从预处理到任务执行各阶段的优化策略,以解决数据倾斜带来的性能瓶颈; 其他说明:数据倾斜是Hadoop集群中常见的性能问题,解决它需要综合考虑数据特征、业务逻辑及系统配置,文章提供的方案具有较强的实用性和指导意义,建议读者根据实际情况选择合适的优化手段。

    化工领域NMP回收服务全球市场分析:预计2031年全球NMP回收服务市场规模将达到106万吨

    N-甲基吡咯烷酮(NMP)是一种具有高极性、高沸点、低粘度、低挥发性、高热稳定性和化学稳定性的非质子溶剂。作为高性能溶剂,其广泛应用于锂离子电池制造、化工生产等多个领域。 NMP原料来源可分为合成NMP与再生NMP两类。合成NMP指通过化学合成工艺制得的NMP产品,其工业生产路线以γ-丁内酯(GBL)与单甲基胺为原料经缩合反应生成。再生NMP则指对使用后的NMP废液进行回收提纯 NMP废液特性: 高浓度NMP:废液中NMP含量较高,因NMP强溶解性可能混合多种有机物及无机物 低毒性但具刺激性:虽较其他有机溶剂毒性低,但高浓度接触仍对人体皮肤及眼睛产生刺激 处理难度大:因高沸点与强溶解性,单纯物理蒸发或自然挥发难以处理,需采用特定回收净化技术 严格环保要求:尤其在电池制造领域,NMP纯度要求极高,再生处理后的NMP纯度须达到同等标准,否则将影响产品质量与环境安全 NMP回收模式: 委托加工模式:回收企业为客户提供闭环循环服务,直接回收客户废液并提纯后返还。该模式可降低客户处理成本,实现资源循环利用 购销模式:回收企业采购上游供应商的NMP废液,经处理提纯后销售给下游客户,通过购销差价盈利 内部循环模式:大型企业集团自建回收处理设施,实现废液中NMP的内部循环利用。例如三菱重工在国内外建有溶剂回收装置,特别是随着全球锂电池需求增长,其海外工厂陆续采用现场回收设备,无需第三方处理即可实现NMP的直接回收提纯。 据QYResearch调研团队最新报告“全球NMP回收服务市场报告2025-2031”显示,预计2031年全球NMP回收服务市场规模将达到106万吨,未来几年年复合增长率CAGR为10.0%。

    QGraphics绘制圆盘不同坐标位置的厚度值,含缩放实现

    QGraphics绘制圆盘不同坐标位置的厚度值,含缩放实现

    交友盲盒小程序版本+全开源版本.zip

    前段时间花钱买的小程序源码 感觉太单调了 全开源版本小程序 这个小程序是云开发的不需要服务器域名 支持流量主wx支付。超级能吸引年轻人的一款小程序 版本新增: 1.Ui美化 2.星座匹配(通过星座进行盲盒) 3.后台管理(可以实时看到用户数量) 4.支付S I P 9功能(后台可以设置支付金额) 5.骗审核模式(可以快速帮助大家通过小程序审核实现上线) 企业小程序可以对接wx支付,非企业小程序只能流量主。 搭建出来一直放那界面单调 就不想运营了 放在那也没啥用 拿出来分享一下吧

    数据埋点方案:Vue3+Grafana的监控看板.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Vue 3是一款备受瞩目的JavaScript框架,它采用了基于Proxy的响应式系统,显著提升了性能和调试能力。其Composition API带来了更高效的逻辑组织方式,使代码复用变得轻而易举。Tree-shaking支持让打包后的文件体积更小,进一步优化了应用性能。Vue 3还与TypeScript深度集成,提供了更完善的类型推导,让开发过程更加顺畅。无论是构建大型应用还是小型项目,Vue 3都能凭借其出色的性能和灵活的架构,帮助开发者高效完成任务,是现代Web开发的理想选择。

    性能追踪方案:Vue3PerformanceAPI的监控.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Vue 3是一款备受瞩目的JavaScript框架,它采用了基于Proxy的响应式系统,显著提升了性能和调试能力。其Composition API带来了更高效的逻辑组织方式,使代码复用变得轻而易举。Tree-shaking支持让打包后的文件体积更小,进一步优化了应用性能。Vue 3还与TypeScript深度集成,提供了更完善的类型推导,让开发过程更加顺畅。无论是构建大型应用还是小型项目,Vue 3都能凭借其出色的性能和灵活的架构,帮助开发者高效完成任务,是现代Web开发的理想选择。

    【数据库设计】Visio绘制ER图详细教程:实体关系图的自定义模板与高效绘制方法

    内容概要:本文档详细介绍了使用Visio绘制ER图的方法,首先阐述了ER图的三个基本要素:实体、属性、关系,并解释了Visio中没有现成模板的问题以及解决方案,即通过自定义模具的方式添加所需的图形元素。接着描述了绘制ER图的两种主要方式:手动绘制和利用Visio的反向工程技术。对于手动绘制,文中以留言板数据库为例,具体演示了从创建实体、设置属性到建立实体间关系的全过程。而对于反向工程,则强调了其高效性,支持多种数据库类型,如Access、MSSQL、Excel等,并给出了详细的步骤说明,包括设置反向工程参数、选择数据库路径、指定生成的表等关键环节。 适合人群:适合有一定数据库基础知识,尤其是正在学习或从事数据库设计工作的人员,包括但不限于数据库管理员、软件开发者、系统分析师等。 使用场景及目标:①帮助用户掌握Visio绘制ER图的基本技能,能够独立完成简单数据库的ER图设计;②利用Visio的反向工程功能快速生成复杂数据库的ER图,提高工作效率;③理解实体、属性、关系三者之间的逻辑关联,为后续数据库设计提供理论依据。 阅读建议:建议读者按照文档中的步骤逐步操作练习,同时结合实际项目需求,灵活运用所学知识,特别是对于反向工程部分,可以尝试不同类型的数据库以加深理解。

    QC方法在提高箭载仪器支架装配合格率上的应用研究.zip

    QC方法在提高箭载仪器支架装配合格率上的应用研究.zip

Global site tag (gtag.js) - Google Analytics