当屏幕中包含一个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 再来开始这个事件的分发。
如果事件传递到某一层的子 view 的 onTouchEvent 上了,这个方法返回了 false ,那么这个事件会从这个 view 往上传递,都是 onTouchEvent 来接收。而如果传递到最上面的 onTouchEvent 也返回 false 的话,这个事件就会“消失”,而且接收不到下一次事件。
【转自】http://www.blogjava.net/lzqdiy/archive/2011/05/08/349794.html
分享到:
相关推荐
在Android系统中,触摸事件(Touch Event)是用户与设备交互的重要方式,它涉及到了UI控件的响应和处理。本文将深入解析Android的Touch事件传递机制,帮助开发者理解这一核心概念。 首先,我们了解下Android中的...
本DEMO主要目的是帮助开发者理解并测试Android中的触摸事件处理机制。 Android的触摸事件处理主要包括三个基本动作:ACTION_DOWN(按下)、ACTION_MOVE(移动)和ACTION_UP(释放)。当用户触摸屏幕时,系统会生成...
首先,让我们了解Android中的触摸事件处理流程。Android通过MotionEvent类来表示触摸屏幕产生的动作,如ACTION_DOWN、ACTION_UP、ACTION_MOVE等。当用户触摸屏幕时,系统会生成一个MotionEvent对象,并将其传递给...
总结来说,Android中的`onTouch`事件处理涉及到ACTION_DOWN、ACTION_MOVE和ACTION_UP三个阶段,通过对Y坐标的比较,我们可以判断出用户的上下移动。在实际项目中,这样的功能可以应用于滑动菜单、滚动视图、滑动切换...
总结来说,Android的Touch事件处理机制通过层层传递和拦截,确保了对用户触摸行为的精确响应。理解这一机制对于开发高效且用户友好的应用至关重要,尤其是在涉及复杂布局和多点触摸功能时。开发者可以根据需要在不同...
综上所述,"安卓Android源码——touch1.rar"这个压缩包涉及了Android系统中触摸屏驱动、输入事件处理、UI交互、框架服务等多个核心领域,是深入理解Android系统和进行定制开发的重要资源。通过对这些源码的研究,...
本篇将深入解析“android Touch触发事件的生命周期”,着重讨论ViewGroup中点击事件的`dispatchTouchEvent()`, `onInterceptTouchEvent()`, 和`onTouchEvent()`这三个关键方法之间的关系及其工作流程。 首先,我们...
Android的触摸事件处理主要通过MotionEvent类来完成。MotionEvent封装了触摸屏幕时的各种动作,如ACTION_DOWN(手指按下)、ACTION_UP(手指抬起)、ACTION_MOVE(手指在屏幕上移动)等。开发者通常需要在Activity或...
"Android Touch Test APK 源码"提供了一个专门用于测试和理解Android触摸事件处理机制的应用程序。通过分析这个源码,开发者可以深入学习如何在Android应用中有效地处理用户的点击、滑动以及其他触摸操作。 首先,...
在Android开发中,触摸事件是用户与应用交互的基础,它涉及到`MotionEvent`类和触摸事件的处理机制。本教程将深入探讨`android_触摸事件Demo`,帮助开发者理解如何在Android应用程序中处理用户的触摸输入。 一、...
### Android中处理各种触摸事件详解 #### 一、引言 在Android开发中,触摸事件是用户与应用程序交互的重要方式之一。正确地处理各种触摸事件不仅能够提升用户体验,还能够帮助开发者实现更加丰富的功能。本文将...
解决这个问题通常需要合理地设计事件处理逻辑,例如通过判断滑动距离来区分滑动和点击,或者使用GestureDetector来识别不同类型的用户手势。 总的来说,理解Android中的View事件传递、事件消费以及触摸事件和点击...
本篇文章将深入探讨“Android绘图中的触摸事件处理”。 一、触摸事件处理机制 Android系统通过MotionEvent类来封装触摸屏幕产生的各种动作,如ACTION_DOWN、ACTION_UP、ACTION_MOVE等。当用户触摸屏幕时,事件会...
在Android开发中,事件传递是应用界面交互的关键部分,尤其是触摸事件(Touch Event)的处理。本示例“android事件传递demo”旨在演示如何在Android应用程序中管理触摸事件的分发流程,帮助开发者理解并有效地处理用户...
在Android系统中,触摸事件(Touch Event)是用户与设备交互的主要方式,它涉及到了UI控件的交互和事件处理。本Demo主要展示了Android的Touch事件分发机制,包括事件的传递顺序、处理流程以及如何自定义控件来拦截或...
3. **事件处理**:每个View的`onTouchEvent()`方法负责处理实际的事件。如果`onTouchEvent()`返回true,表示事件已被当前View消费,事件流结束;如果返回false,事件会回溯到上一级View。 4. **ACTION_DOWN与ACTION...
- 分析源码可以帮助开发者深入理解Android是如何处理触控事件的,例如,查看`InputDispatcher`的事件分发逻辑,或者`View`的事件处理代码。 - 对于开发者而言,这有助于优化应用的触摸响应性能,解决触控问题,...
Android Touch源码解析 在Android操作系统中,触摸事件的处理是至关重要的,它涉及到...通过深入研究MotionEvent、View和ViewGroup的触摸事件处理机制,可以更好地控制用户的交互体验,并解决各种触摸相关的技术问题。
3. **onTouchEvent**:事件处理方法,在触摸事件传递到某个视图时被调用,视图可以根据需要处理事件或将其忽略。 4. **onClickListener** 和 **onLongClickListener**:这两种方法通常与按钮等控件关联,分别用于...