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

Android的UI事件流机制

 
阅读更多

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 Touch事件传递机制解析

    在Android系统中,触摸事件是用户与应用交互的重要方式,理解其事件传递机制对于优化UI交互和处理复杂触摸逻辑至关重要。本文将深入解析Android的Touch事件传递机制,并结合源码进行详细阐述。 首先,Android的触摸...

    [android][Android点击事件分发机制分析]

    事件分发机制是Android系统处理用户触摸事件的关键流程,理解这一机制对于优化UI交互和处理复杂视图层次结构至关重要。本文将深入探讨Android点击事件的分发过程,包括事件的产生、传递和处理。 首先,当用户在屏幕...

    Android Touch事件分发机制代码一

    在Android系统中,触摸事件的分发是UI交互的核心部分,它涉及到Activity、ViewGroup和View之间的协同工作。本文将深入解析Android的Touch事件分发机制,并通过一个名为"EventDispatchTest"的示例来说明。 1. **事件...

    Android事件分发机制小Demo

    在Android开发中,事件分发机制是至关重要的一个部分,它决定了用户与界面元素交互时的行为。本小Demo主要展示了Android事件分发的过程,并通过一系列的日志截图来帮助理解这一机制。下面,我们将深入探讨Android...

    Android UI统一框架

    在Android平台上,这通常包括布局管理器、视图组件、适配器以及各种UI事件的处理机制。 在描述中提到的参考博文《Android UI统一框架》中,作者提出了一个具体的实现方案。该框架可能包含以下几个关键部分: 1. **...

    Android UI开发经典参考资料

    3. **Android 安全性**: Android系统采用沙箱机制,每个应用程序都在自己的安全环境中运行,互不干扰。此外,应用签名用于验证应用的身份,权限系统则限制了应用能访问的系统资源。开发者需要理解这些概念,以确保...

    android UI分析方法

    **逻辑空间**:从逻辑层面出发,关注Android UI的构成元素、数据流和控制流。如Activity、Intent、Service等组件如何协作,数据如何在不同组件间传递,以及事件处理机制等,这些都是理解系统行为的关键。 **现实到...

    Android事件传递机制

    在Android应用开发中,事件传递机制是界面交互的核心,它决定了用户在屏幕上的操作如何被各个UI组件正确响应。本文将详细剖析Android事件传递的流程,帮助开发者理解并有效地利用这一机制。 一、事件构成与分类 ...

    Android事件分发机制(三)事件分发和消费

    了解并掌握Android事件分发机制,可以帮助开发者更好地控制UI交互,实现复杂的触摸行为,例如自定义滑动效果、手势识别等。在实际开发中,熟练运用事件拦截和处理策略,可以提高用户体验,优化界面响应。

    安卓Android源码——UI设计之 仿做蘑菇街UI设计 源码.zip

    通过研究这个项目,开发者不仅可以学习到Android UI设计的实践技巧,还能提升对Android系统机制的理解,以及如何将设计理念转化为实际代码。同时,分析并改进现有的源码也是提升编程技能的有效途径。对于想要从事...

    Android TouchEvent事件传递机制

    在Android系统中,TouchEvent事件处理是用户界面交互的核心部分,它涉及到UI组件的触摸响应,是应用程序接收并处理用户触摸屏幕动作的主要方式。本篇将深入解析Android的TouchEvent事件传递机制,帮助开发者更好地...

    Android事件传递机制Demo.zip

    1. **事件流**:Android事件传递机制遵循"事件流",即事件首先会传递到View树的最顶层,也就是Window,然后向下逐级分发。事件流包括三个阶段:Down(触摸按下)、Move(移动)和Up(触摸释放)。 2. **事件分发**...

    Android 4.4.2_R2 SystemUI源码

    《Android 4.4.2_R2 SystemUI...对于开发者而言,深入研究这部分源码,可以更好地理解Android系统的运行机制,有助于开发出更加符合用户需求的应用。同时,这也为Android的后续版本升级和定制化开发奠定了坚实的基础。

    事件分发机制

    在Android开发中,事件分发机制是理解和优化用户交互体验的关键环节。事件,通常指的是用户的触摸操作,如点击、滑动等,这些操作如何被准确地传递到相应的View上进行处理,就是事件分发机制的核心内容。下面我们将...

    android UI开发专题

    ### Android UI开发专题:深入解析资源管理与图形处理 在Android开发中,用户界面(UI)设计占据了极其重要的地位,良好的UI不仅能够提升用户体验,还能增强应用的吸引力。本专题聚焦于Android界面设计的关键方面,...

    android RTMP 视频流播放器

    在Android平台上,RTMP(Real-Time Messaging Protocol)视频流播放是一个常见的需求,特别是在实时直播、在线教育和视频会议等场景中。本项目是基于Vitamio框架开发的一个Android RTMP视频流播放器,旨在帮助开发者...

    Android控件架构与自定义控件详解(四)——事件拦截机制分析

    事件拦截机制是Android UI框架中的一个重要组成部分,它允许我们精确地控制事件的传递流程,从而实现复杂的用户交互逻辑。本篇文章将深入探讨Android控件架构,特别是事件拦截机制,并通过`onTouchEvent`方法进行...

    事件分发机制--瀑布流

    瀑布流布局是一种常见的UI设计模式,常用于展示各种列表数据,如电商商品、社交媒体动态等。它的特点是元素根据屏幕宽度自适应地垂直排列,形成一种类似瀑布倾泻的效果,每一列的高度由其内部元素决定。在Android...

    android UI程序设计

    ### Android UI程序设计知识点 #### 一、UI概念与变革 - **选择区别于桌面系统的窗体**:在设计Android应用界面时,需考虑移动设备的特性,与传统的桌面系统有所区别。 - **屏幕尺寸的限制**:考虑到移动设备屏幕...

    android 瀑布流效果

    总之,Android瀑布流效果的实现涉及布局管理、数据适配、动态计算和加载策略等多个方面,开发者需要对Android UI机制有深入理解。通过研究WaterfallDemo_2项目,可以系统地学习和掌握这一技术。

Global site tag (gtag.js) - Google Analytics