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

【Android学习笔记】onInterceptTouchEvent()、onTouchEvent()

 
阅读更多

转自:http://www.cnblogs.com/hundan/archive/2011/08/27/2155442.html

一、资源:

MotionEvent事件在onInterceptTouchEvent()、onTouchEvent()中的传递顺序

ANDROID事件触发机制,针对于由于触摸(Touch)而触发的事件。

二、重点

  • 首先要明确onInterceptTouchEvent()这个方法只针对于ViewGroup,事件传到ViewGroup一般先触发onInterceptTouchEvent(),View是没有这个方法的
  • 具体传递的流程见资源1,很详细,对理解很有帮助
  • onInterceptTouchEvent()改变事件传递的方向
    • false->下一个对象
    • true->本对象
  • onTouchEvent() 用于处理事件,返回值决定当前控件是否消费(consume)了这个事件。
    • false->继续下一步处理
    • true->已经消费,不继续处理

三、问题思考

1、是不是无论哪种情况下,最后一个发生的onTouchEvent()的返回值均为true?

我做了试验,onTouchEvent()和onTouchEvent()均返回false情况,一个滑动手势只捕捉到了ACTION_DOWN

所以我认为android应该是有个机制,让顶部有效的onTouchEvent自定返回true,按照资源1的描述看来,此后的时间信息都直接传给了最顶部的有效onTouchEvent()处理了。

若顶部有效的onTouchEvent自定返回false的话,那么开始的信息得不到消费,比如Action_DOWN,那后面的动作也没办法触发啊!


2、我感觉onInterceptTouchEvent()其实只能处理Action_DOWN,因为我觉得问题1正确的话,此后的Action_UP,Action_MOVE都会被最后一个有用的onTouchEvent截取?

理由同问题描述,信息最后都汇总到返回true的onTouchEvent哪里,onInterceptTouchEvent()根本没有机会啊。

但是在一些程序中,我确实看到了onInterceptTouchEvent()截取了ACTION_MOVE,ACTION_UP等操作,如何实现的,不解!!

3、实现左右两个屏幕的切换

“我研究了下。 需要往 screen 加 onclick事件,才能两个屏幕这样切换。 没弄懂onInterceptTouchEvent。 为什么要加 onclick呢,因为如果不加,那么 onInterceptTouchEvent return false 也是直接执行 onTouchEvent 而不是继续执行 onInterceptTouchEvent 如果加了onclick,那么 onInterceptTouchEvent return false 会直接执行 onInterceptTouchEvent。 求解答。”

首先得明确onInterceptTouchEvent()是ViewGroup的方法,不是View的方法!
前半句好理解:设当前ViewGroup称为Parent,点击的子View为Child,
所以就算 onInterceptTouchEvent return false它也只能触发Child和Parent的onTouchEvent, 你那个时候Parent.onTouchEvent返回的应该也是true,此后的动作都直接传到Parent.onTouchEvent

后半句无法理解,onclick在onTouchEvent中的ACTION_UP实现(参见下一篇),如果问题1的成立,那么后面的ACTION_MOVE,ACTION_UP都传不到非顶层的函数,所以说问题1是症结所在!!

 

分享到:
评论

相关推荐

    onTouchEvent 、onInterceptTouchEvent的顺序~

    在Android开发中,触摸事件处理是用户界面交互的关键部分,`onTouchEvent` 和 `onInterceptTouchEvent` 是处理这些事件的两个重要方法。本文将深入探讨这两个方法的使用、顺序以及它们在Android事件分发机制中的角色...

    android事件2-onInterceptTouchEvent和onTouchEvent调用时序

    在Android开发中,理解和掌握`onInterceptTouchEvent`与`onTouchEvent`的调用时序至关重要,因为它们是实现触摸事件处理的关键。这两个方法都属于Android的触摸事件处理机制,涉及到了ViewGroup与子View之间的事件...

    浅谈Android onTouchEvent 与 onInterceptTouchEvent的区别详解

    在Android开发中,触摸事件的处理是用户交互的基础,而`onTouchEvent`和`onInterceptTouchEvent`则是处理这些事件的关键方法。这篇文章将深入解析这两个方法的区别和它们在触摸事件处理链中的作用。 首先,`...

    onInterceptTouchEvent与OntouchEvent之间

    `onInterceptTouchEvent`和`onTouchEvent`是两个关键的方法,它们共同构成了Android事件分发机制的核心。 `onInterceptTouchEvent`方法在ViewGroup中定义,它的主要作用是拦截事件流,即决定事件是否由父视图处理,...

    onInterceptTouchEvent和onTouchEvent学习

    `onInterceptTouchEvent`和`onTouchEvent`是两个核心的方法,它们共同决定了Android应用如何响应用户的触摸操作。这两个方法主要在ViewGroup(如布局)和View(如按钮、文本框等)中被使用。 首先,我们来理解`...

    onInterceptTouchEvent和onTouchEvent使用demo

    `onInterceptTouchEvent`和`onTouchEvent`是两个至关重要的方法,它们共同构成了Android视图层次结构中的触摸事件分发机制。下面我们将深入探讨这两个方法的用法及其在实际开发中的应用场景。 1. `...

    onInterceptTouchEvent和onTouchEvent调用关系详解

    `onInterceptTouchEvent`和`onTouchEvent`是两个关键的方法,它们协同工作以处理触摸屏幕的动作。这篇文章将深入探讨这两个方法的调用关系及其在Android事件分发机制中的作用。 首先,我们要理解Android的事件分发...

    安卓onTouchEvent上下左右滑动事件

    在Android开发中,触摸事件是用户与应用交互的重要方式,特别是在移动设备上。`onTouchEvent`是处理触摸事件的主要方法,它可以捕捉用户的点击、滑动等手势。本篇将详细讲解如何通过重写`onTouchEvent`来实现上下...

    android中dispatchTouchEvent和onInterceptTouchEvent研究

    当`onInterceptTouchEvent`返回true时,表示ViewGroup想要拦截并处理事件,之后的事件序列将不再分发给子View,而是直接交给`onTouchEvent`。如果返回false,事件将继续传递给子View。 在实际应用中,`...

    onInterceptTouchEvent

    在Android开发中,触摸事件处理是用户界面交互的关键部分,`onInterceptTouchEvent`和`onTouchEvent`是处理这些事件的两个重要方法。本篇文章将深入探讨`onInterceptTouchEvent`,并结合`onTouchEvent`讲解它们的...

    Android事件模型之interceptTouchEvnet ,onTouchEvent关系正解

    本文将深入探讨Android事件模型,特别是`onTouchEvent`和`interceptTouchEvent`的关系,帮助开发者更好地理解这两个方法如何协同工作以实现复杂的触摸事件处理。 首先,Android事件模型基于触摸事件的分发机制,它...

    View的onInterceptTouchEvent(MotionEvent ev)和dispatchTouchEvent(MotionEvent ev) 解析

    总之,`onInterceptTouchEvent(MotionEvent ev)` 和 `dispatchTouchEvent(MotionEvent ev)` 是Android触摸事件处理的核心,它们共同决定了触摸事件如何在视图层次结构中流动。通过合理利用这两个方法,开发者可以...

    android onTouchEvent处理机制总结(必看)

    通常,事件会从底层的View开始向上冒泡,通过`dispatchTouchEvent`分发,如果在某个ViewGroup的`onInterceptTouchEvent`中返回`true`,事件会被拦截并交由该ViewGroup的`onTouchEvent`处理,否则事件将继续传递给子...

    android触摸消息传递

    在你的项目中,`AndroidTest_onInterceptTouchEvent`很可能是一个示例应用,用于演示如何利用`MotionEvent`和`onTouchEvent`,以及`onInterceptTouchEvent`来实现触摸事件的处理和传递。通过调试和分析这个示例,你...

    Pro Android学习:touch screen小例子

    "Pro Android学习:touch screen小例子"是一个教程,旨在帮助开发者理解和实践如何在Android应用中处理触摸事件和手势识别。在这个实例中,我们将深入探讨Android的触摸事件处理机制以及如何编写源代码来实现基本的...

    仿ViewPager,事件分发应用

    标签中的"onInterceptTouchEvent"和"onTouchEvent"是Android事件分发机制的关键函数。`onInterceptTouchEvent`通常用于父View需要在子View之前对事件作出响应的情况,比如在ViewPager中,当用户滑动时,ViewPager...

    OnTouchEvent.rar

    `OnTouchEvent.rar`中的示例和流程图将帮助开发者直观理解这一过程,对于Android开发的学习和实践非常有价值。通过对事件分发机制的掌握,开发者可以更好地设计和优化用户界面,提供流畅的用户体验。

    Android onTouchEvent事件中onTouch方法返回值(介绍)

    在Android开发中,触摸事件处理是用户界面交互的关键部分。`onTouchEvent` 是一个重要的方法,用于接收并处理用户对屏幕的触摸操作。本文将详细介绍`onTouchEvent`中`onTouch`方法的返回值及其影响。 `onTouchEvent...

    View的onInterceptTouchEvent(MotionEvent ev)和dispatchTouchEvent(MotionEvent ev)

    总之,`onInterceptTouchEvent`和`dispatchTouchEvent`是Android触摸事件处理的核心组件。通过深入理解并熟练运用这两个方法,开发者可以创建出更加符合用户预期、交互体验优良的应用。在实际编程中,我们需要根据...

Global site tag (gtag.js) - Google Analytics