`
天天向上1989
  • 浏览: 418338 次
  • 性别: Icon_minigender_2
  • 来自: 南京
社区版块
存档分类
最新评论

【转】android中Touch事件的处理逻辑

阅读更多

当屏幕中包含一个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事件传递机制解析

    在Android系统中,触摸事件(Touch Event)是用户与设备交互的重要方式,它涉及到了UI控件的响应和处理。本文将深入解析Android的Touch事件传递机制,帮助开发者理解这一核心概念。 首先,我们了解下Android中的...

    android测试Touch事件DEMO

    本DEMO主要目的是帮助开发者理解并测试Android中的触摸事件处理机制。 Android的触摸事件处理主要包括三个基本动作:ACTION_DOWN(按下)、ACTION_MOVE(移动)和ACTION_UP(释放)。当用户触摸屏幕时,系统会生成...

    Android判断touch事件点是否在view范围内的方法

    首先,让我们了解Android中的触摸事件处理流程。Android通过MotionEvent类来表示触摸屏幕产生的动作,如ACTION_DOWN、ACTION_UP、ACTION_MOVE等。当用户触摸屏幕时,系统会生成一个MotionEvent对象,并将其传递给...

    android 关于touch demo

    总结来说,Android中的`onTouch`事件处理涉及到ACTION_DOWN、ACTION_MOVE和ACTION_UP三个阶段,通过对Y坐标的比较,我们可以判断出用户的上下移动。在实际项目中,这样的功能可以应用于滑动菜单、滚动视图、滑动切换...

    Android的Touch事件处理机制介绍

    总结来说,Android的Touch事件处理机制通过层层传递和拦截,确保了对用户触摸行为的精确响应。理解这一机制对于开发高效且用户友好的应用至关重要,尤其是在涉及复杂布局和多点触摸功能时。开发者可以根据需要在不同...

    安卓Android源码——touch1.rar

    综上所述,"安卓Android源码——touch1.rar"这个压缩包涉及了Android系统中触摸屏驱动、输入事件处理、UI交互、框架服务等多个核心领域,是深入理解Android系统和进行定制开发的重要资源。通过对这些源码的研究,...

    android Touch触发事件的生命周期

    本篇将深入解析“android Touch触发事件的生命周期”,着重讨论ViewGroup中点击事件的`dispatchTouchEvent()`, `onInterceptTouchEvent()`, 和`onTouchEvent()`这三个关键方法之间的关系及其工作流程。 首先,我们...

    Android-touch-event.rar_android touch_android 翻页_event

    Android的触摸事件处理主要通过MotionEvent类来完成。MotionEvent封装了触摸屏幕时的各种动作,如ACTION_DOWN(手指按下)、ACTION_UP(手指抬起)、ACTION_MOVE(手指在屏幕上移动)等。开发者通常需要在Activity或...

    Android Touch Test APK 源码

    "Android Touch Test APK 源码"提供了一个专门用于测试和理解Android触摸事件处理机制的应用程序。通过分析这个源码,开发者可以深入学习如何在Android应用中有效地处理用户的点击、滑动以及其他触摸操作。 首先,...

    android_触摸事件Demo

    在Android开发中,触摸事件是用户与应用交互的基础,它涉及到`MotionEvent`类和触摸事件的处理机制。本教程将深入探讨`android_触摸事件Demo`,帮助开发者理解如何在Android应用程序中处理用户的触摸输入。 一、...

    android中处理各种触摸事件

    ### Android中处理各种触摸事件详解 #### 一、引言 在Android开发中,触摸事件是用户与应用程序交互的重要方式之一。正确地处理各种触摸事件不仅能够提升用户体验,还能够帮助开发者实现更加丰富的功能。本文将...

    Android 中触摸事件与点击事件分析

    解决这个问题通常需要合理地设计事件处理逻辑,例如通过判断滑动距离来区分滑动和点击,或者使用GestureDetector来识别不同类型的用户手势。 总的来说,理解Android中的View事件传递、事件消费以及触摸事件和点击...

    android绘图(事件处理之触摸事件)

    本篇文章将深入探讨“Android绘图中的触摸事件处理”。 一、触摸事件处理机制 Android系统通过MotionEvent类来封装触摸屏幕产生的各种动作,如ACTION_DOWN、ACTION_UP、ACTION_MOVE等。当用户触摸屏幕时,事件会...

    android 事件传递demo

    在Android开发中,事件传递是应用界面交互的关键部分,尤其是触摸事件(Touch Event)的处理。本示例“android事件传递demo”旨在演示如何在Android应用程序中管理触摸事件的分发流程,帮助开发者理解并有效地处理用户...

    Touch事件分发机制

    在Android系统中,触摸事件(Touch Event)是用户与设备交互的主要方式,它涉及到了UI控件的交互和事件处理。本Demo主要展示了Android的Touch事件分发机制,包括事件的传递顺序、处理流程以及如何自定义控件来拦截或...

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

    3. **事件处理**:每个View的`onTouchEvent()`方法负责处理实际的事件。如果`onTouchEvent()`返回true,表示事件已被当前View消费,事件流结束;如果返回false,事件会回溯到上一级View。 4. **ACTION_DOWN与ACTION...

    安卓Android源码——touch.rar

    - 分析源码可以帮助开发者深入理解Android是如何处理触控事件的,例如,查看`InputDispatcher`的事件分发逻辑,或者`View`的事件处理代码。 - 对于开发者而言,这有助于优化应用的触摸响应性能,解决触控问题,...

    android touch源码

    Android Touch源码解析 在Android操作系统中,触摸事件的处理是至关重要的,它涉及到...通过深入研究MotionEvent、View和ViewGroup的触摸事件处理机制,可以更好地控制用户的交互体验,并解决各种触摸相关的技术问题。

    android事件分发机制

    3. **onTouchEvent**:事件处理方法,在触摸事件传递到某个视图时被调用,视图可以根据需要处理事件或将其忽略。 4. **onClickListener** 和 **onLongClickListener**:这两种方法通常与按钮等控件关联,分别用于...

Global site tag (gtag.js) - Google Analytics