`
- 浏览:
710069 次
- 性别:
- 来自:
北京
-
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
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在Android开发中,理解和掌握`onInterceptTouchEvent`与`onTouchEvent`的调用时序至关重要,因为它们是实现触摸事件处理的关键。这两个方法都属于Android的触摸事件处理机制,涉及到了ViewGroup与子View之间的事件...
onInterceptTouchEvent和onTouchEvent调用时序详解 测试demo 详细介绍请移步:http://blog.csdn.net/yiranxinshou/article/details/9201833
"Touch事件案例"主要关注的是`onInterceptTouchEvent`和`onTouchEvent`这两个方法的调用时序,它们是处理触摸事件的关键组件,尤其在复杂的布局结构中,理解它们的工作原理对于优化用户界面和交互至关重要。...
AIGC_基于ControlNet的AI视频生成算法_支持动漫+写实风格转换_附项目源码+流程教程_优质项目实战
app开发
毕业设计指南-word
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
信息收集思维导图
内容概要:本文详细介绍了三维偏微分方程组的数值解法及其一阶近似的推导过程。首先,针对定义在一个三维立方体域上的六个耦合偏微分方程组,选择了有限差分法(FDM)作为数值求解的方法。文中提供了详细的离散化步骤、边界条件设定以及迭代求解的具体实现,并附带了完整的Python代码用于求解和可视化结果。其次,通过对六个方程的线性组合,推导出了一阶近似方程,证明了在特定条件下,系统的演化可以由一个扩散方程来描述。最后,对不同参数σ下的数值结果进行了分析,展示了不同σ值对解的影响。 适合人群:具备数学建模和编程基础的研究人员和技术爱好者,尤其是对偏微分方程数值解感兴趣的学者。 使用场景及目标:适用于需要解决复杂物理现象模拟的问题,如流体力学、热传导等领域。通过学习本文,读者能够掌握有限差分法的基本思想和应用技巧,同时理解如何利用Python进行科学计算和数据可视化。 其他说明:本文不仅提供理论推导,还给出了具体的代码实现,便于读者理解和复现实验结果。此外,文中涉及的可视化部分可以帮助直观地展示数值解的特点和变化趋势。
大数据项目深度研究分析报告.docx
对于WIN11系统连接共享打印机出现提示:windows无法连接到打印机,请检查 打印机名并重试,以及“操作无法完成(错误 0x00000709)”等提示进行解决。
内容概要:本文详细介绍了Docker的重要概念、常用指令及其应用场景,旨在帮助初学者快速掌握Docker的使用方法。主要内容涵盖镜像和容器的概念区分、镜像的获取方式(网络拉取、本地加载)、镜像的使用(查看、创建容器、删除)、容器的管理(进入、退出、停止、删除)、镜像的生成(自动构建、手动提交)以及镜像的分享(在线存储库、本地导出)。此外,还涉及了无用数据的清理和一些常用的可视化管理工具。 适合人群:对Docker感兴趣的初学者,尤其是希望快速上手并应用于实际项目的开发人员。 使用场景及目标:适用于需要快速搭建一致运行环境、进行应用部署和维护的技术团队。通过学习本文,读者能够独立完成Docker环境的搭建、镜像和容器的管理,从而提高开发效率和环境一致性。 其他说明:文中提供了丰富的实例和官方文档链接,便于读者深入理解和实践。同时,附带了一些实用的参考资料,方便进一步探索Docker的高级特性。
矢量边界,行政区域边界,精确到乡镇街道,可直接导入arcgis使用
内容概要:本文详细介绍了动态综合评价中的无量纲化方法,并提供了Python代码实现。主要内容包括:数据准备、静态无量纲化方法(极差法、Z-score标准化、均值法)、三种动态无量纲化改进方法(标准序列法、全序列法、增量权法)。文中还进行了结果分析与比较,得出了全序列法是最推荐的方法,因其能够同时保留横向和纵向信息。最后,文章展示了如何将这些方法应用于TOPSIS综合评价系统,以及如何通过熵权法计算权重。 适合人群:具备一定数据分析和编程基础的研究人员、数据科学家、工程师。 使用场景及目标:适用于需要对多维时序数据进行无量纲化处理和综合评价的场景,如生产质量监控、供应商评估等。目标是帮助用户理解和实现动态综合评价中的无量纲化方法,提高数据处理和分析能力。 其他说明:本文不仅提供了详细的代码实现,还通过实例验证了不同方法的效果,确保读者能够深入理解每种方法的特点和应用场景。
腾讯AI封装调用
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
内容概要:本文详细介绍了A*算法的传统框架及其在路径规划中的局限性,并提出了多项改进措施。首先,针对启发函数进行了优化,引入了基于机器学习的预测方法以及动态权重调整,使得路径更加智能化和平滑化。其次,在邻接表和优先队列方面采用了更高效的数据结构,提高了算法的执行效率。实验结果显示,改进后的A*算法不仅缩短了路径长度,还显著降低了运行时间和空间开销。此外,作者对比了多种常见路径规划算法(如Dijkstra、RRT),展示了改进A*算法在不同场景下的优越性能。 适合人群:从事机器人导航、自动驾驶、游戏开发等领域研究的技术人员,尤其是对路径规划算法有一定了解并希望深入探索优化方法的研究者。 使用场景及目标:①需要在二维或三维环境中进行高效路径规划的应用场合;②希望通过优化现有算法来提升系统性能的研发团队;③希望掌握更多关于路径规划理论和技术细节的学习者。 其他说明:文中提供了具体的MATLAB代码片段用于解释各个部分的具体实现方式,并分享了一些实用技巧,如优先队列的容器映射实现和动画绘制优化等。
app开发
网络工程师(中级)是软考(计算机技术与软件专业技术资格考试)的一部分,主要考察计算机网络基础、网络安全、网络管理、操作系统、数据库等内容,考试分为上午的基础知识选择题和下午的案例分析题。
IoT最新进展