android中的事件类型分为按键事件和屏幕触摸事件,Touch事件是屏幕触摸事件的基础事件,有必要对它进行深入的了解。
一个最简单的屏幕触摸动作触发了一系列Touch事件:ACTION_DOWN->ACTION_MOVE->ACTION_MOVE->ACTION_MOVE...->ACTION_MOVE->ACTION_UP
当屏幕中包含一个ViewGroup,而这个ViewGroup又包含一个子view,
这个时候android系统如何处理Touch事件呢?到底是ViewGroup来处理Touch事件,还是子view来处理Touch事件呢?我只能很肯定的对你说不一定。呵呵,为什么呢?看看下面我的调查结果你就明白了。
android系统中的每个View的子类都具有下面三个和TouchEvent处理密切相关的方法:
1)public boolean dispatchTouchEvent(MotionEvent ev) 这个方法用来分发TouchEvent
2)public boolean onInterceptTouchEvent(MotionEvent ev) 这个方法用来拦截TouchEvent
3)public boolean onTouchEvent(MotionEvent ev) 这个方法用来处理TouchEvent
当TouchEvent发生时,首先Activity将TouchEvent传递给最顶层的View, TouchEvent最先到达最顶层 view 的 dispatchTouchEvent ,然后由 dispatchTouchEvent 方法进行分发,
如果dispatchTouchEvent返回true ,则交给这个view的onTouchEvent处理,
如果dispatchTouchEvent返回 false ,则交给这个 view 的 interceptTouchEvent 方法来决定是否要拦截这个事件,
如果 interceptTouchEvent 返回 true ,也就是拦截掉了,则交给它的 onTouchEvent 来处理,
如果 interceptTouchEvent 返回 false ,那么就传递给子 view ,由子 view 的 dispatchTouchEvent 再来开始这个事件的分发。
可以总结为: 当一个touch事件发生时,最上层视图窗口来往下层分发,每层都有可以拦截的机制,一直传到最底层的UI控件 。
如果一个MotionEvent.ACTION_DOWN事件传递到最底一层的子 view 的 onTouchEvent 上了,这个方法返回了 false ,那么这个事件会从这个 view 往上传递给父ViewGroup,都是 onTouchEvent 来接收。而如果传递到最上面的 onTouchEvent 也返回 false 的话,这个事件就会“消失”,而且接收不到下一次事件如MotionEvent.ACTION_MOVE 或 MotionEvent.ACTION_UP。
分享到:
相关推荐
在Android系统中,触摸事件是用户与应用交互的重要方式,理解其事件传递机制对于优化UI交互和处理复杂触摸逻辑至关重要。本文将深入解析Android的Touch事件传递机制,并结合源码进行详细阐述。 首先,Android的触摸...
事件分发机制是Android系统处理用户触摸事件的关键流程,理解这一机制对于优化UI交互和处理复杂视图层次结构至关重要。本文将深入探讨Android点击事件的分发过程,包括事件的产生、传递和处理。 首先,当用户在屏幕...
在Android系统中,触摸事件的分发是UI交互的核心部分,它涉及到Activity、ViewGroup和View之间的协同工作。本文将深入解析Android的Touch事件分发机制,并通过一个名为"EventDispatchTest"的示例来说明。 1. **事件...
在Android开发中,事件分发机制是至关重要的一个部分,它决定了用户与界面元素交互时的行为。本小Demo主要展示了Android事件分发的过程,并通过一系列的日志截图来帮助理解这一机制。下面,我们将深入探讨Android...
在Android平台上,这通常包括布局管理器、视图组件、适配器以及各种UI事件的处理机制。 在描述中提到的参考博文《Android UI统一框架》中,作者提出了一个具体的实现方案。该框架可能包含以下几个关键部分: 1. **...
3. **Android 安全性**: Android系统采用沙箱机制,每个应用程序都在自己的安全环境中运行,互不干扰。此外,应用签名用于验证应用的身份,权限系统则限制了应用能访问的系统资源。开发者需要理解这些概念,以确保...
**逻辑空间**:从逻辑层面出发,关注Android UI的构成元素、数据流和控制流。如Activity、Intent、Service等组件如何协作,数据如何在不同组件间传递,以及事件处理机制等,这些都是理解系统行为的关键。 **现实到...
在Android应用开发中,事件传递机制是界面交互的核心,它决定了用户在屏幕上的操作如何被各个UI组件正确响应。本文将详细剖析Android事件传递的流程,帮助开发者理解并有效地利用这一机制。 一、事件构成与分类 ...
了解并掌握Android事件分发机制,可以帮助开发者更好地控制UI交互,实现复杂的触摸行为,例如自定义滑动效果、手势识别等。在实际开发中,熟练运用事件拦截和处理策略,可以提高用户体验,优化界面响应。
通过研究这个项目,开发者不仅可以学习到Android UI设计的实践技巧,还能提升对Android系统机制的理解,以及如何将设计理念转化为实际代码。同时,分析并改进现有的源码也是提升编程技能的有效途径。对于想要从事...
在Android系统中,TouchEvent事件处理是用户界面交互的核心部分,它涉及到UI组件的触摸响应,是应用程序接收并处理用户触摸屏幕动作的主要方式。本篇将深入解析Android的TouchEvent事件传递机制,帮助开发者更好地...
1. **事件流**:Android事件传递机制遵循"事件流",即事件首先会传递到View树的最顶层,也就是Window,然后向下逐级分发。事件流包括三个阶段:Down(触摸按下)、Move(移动)和Up(触摸释放)。 2. **事件分发**...
在Android开发中,事件分发机制是理解和优化用户交互体验的关键环节。事件,通常指的是用户的触摸操作,如点击、滑动等,这些操作如何被准确地传递到相应的View上进行处理,就是事件分发机制的核心内容。下面我们将...
### Android UI开发专题:深入解析资源管理与图形处理 在Android开发中,用户界面(UI)设计占据了极其重要的地位,良好的UI不仅能够提升用户体验,还能增强应用的吸引力。本专题聚焦于Android界面设计的关键方面,...
在Android平台上,RTMP(Real-Time Messaging Protocol)视频流播放是一个常见的需求,特别是在实时直播、在线教育和视频会议等场景中。本项目是基于Vitamio框架开发的一个Android RTMP视频流播放器,旨在帮助开发者...
事件拦截机制是Android UI框架中的一个重要组成部分,它允许我们精确地控制事件的传递流程,从而实现复杂的用户交互逻辑。本篇文章将深入探讨Android控件架构,特别是事件拦截机制,并通过`onTouchEvent`方法进行...
瀑布流布局是一种常见的UI设计模式,常用于展示各种列表数据,如电商商品、社交媒体动态等。它的特点是元素根据屏幕宽度自适应地垂直排列,形成一种类似瀑布倾泻的效果,每一列的高度由其内部元素决定。在Android...
总之,Android瀑布流效果的实现涉及布局管理、数据适配、动态计算和加载策略等多个方面,开发者需要对Android UI机制有深入理解。通过研究WaterfallDemo_2项目,可以系统地学习和掌握这一技术。
源代码的阅读和理解将有助于开发者深入理解Android UI机制,从而在实际项目中创造出更优质、更具吸引力的用户体验。 总的来说,“android-ui-utils”是Android开发者的重要参考资料,它将帮助我们解决UI设计中的...