`

android onTouchEvent和setOnTouchListener中onTouch的区别

 
阅读更多
原文地址:http://blog.csdn.net/sxsboat/article/details/6923264
android中onTouchEvent和setOnTouchListener中onTouch的区别可以有些人并不了解,其实要说明白这个问题先要说下android的事件传递机制。
首先看下以下的代码1,这段代码反应了View处理事件的过程:
代码1:
public boolean dispatchTouchEvent(MotionEvent event) {
        if (mOnTouchListener != null && mOnTouchListener.onTouch(this, event)) {
            return true;
        }
        return onTouchEvent(event);
    }
在代码1中有一点首先需要明确,那就是如果dispatchTouchEvent返回值为true则本次事件被系统消耗掉(就是被控件处理了), 然后一个新的事件会被传入,如果dispatchTouchEvent返回值为false,则不会有新的事件被传入。
好,明白了这一点再看那个代码1中if语句后面的条件mOnTouchListener != null && mOnTouchListener.onTouch(this, event),mOnTouchListener 对象其实不就是你写的监听器对象吗?比如下面代码2的这个匿名对象。
代码2:
xxxView.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
       
                return true;
            }
        });
好,我们再看下代码2中onTouch事件中的返回值,如果代码2 return true则代表什么呢?代表代码1中将不会执行 return onTouchEvent(event);语句,这也就是说这次系统事件会被消耗掉,将会再次执行dispatchTouchEvent这个方法。
如果代码2 return false则代表代码1会执行onTouchEvent(event);这个方法,本次事件是否会被消耗掉将取决于onTouchEvent的返回值。

做个小总结其实就是如果setOnTouchListener中的onTouch方法返回值是true则onTouchEvent方法将不会被执行;只有当setOnTouchListener中的onTouch方法返回值是false时onTouchEvent方法才被执行。
以上说的情况适用于View对象而不是ViewGroup对象,ViewGroup对象下次再分析
分享到:
评论

相关推荐

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

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

    2011.08.30——— android setOnTouchListener onTouchEvent

    总结来说,`setOnTouchListener`和`onTouchEvent`是Android中处理触摸事件的两种主要方式,它们提供了丰富的交互可能性,帮助开发者构建出响应用户触摸操作的动态界面。理解并熟练运用这些方法对于开发高质量的...

    Android ontouch事件处理的三种方式

    以上三种方式都可以有效地处理Android中的`ontouch`事件,选择哪种方式主要取决于你的项目需求和个人编程风格。在实际开发中,通常会根据功能复杂性和代码组织结构来决定采用哪种实现方式。无论选择哪种方式,确保...

    详谈Android中onTouch与onClick事件的关系(必看)

    首先,`onTouch`事件是Android中用于处理触摸屏事件的接口,它通过`View.OnTouchListener`实现。当用户与屏幕进行交互时,`onTouch`方法会被调用,接收到一个`MotionEvent`对象,该对象包含了触摸事件的详细信息,如...

    老生常谈onTouch和onTouchEvent(必看篇)

    了解`onTouch`和`onTouchEvent`的差异和工作原理对于构建响应灵敏的Android应用至关重要。合理地利用这两个方法可以创建出丰富的用户交互体验,提供定制化的触摸事件处理逻辑。在实际开发中,开发者可以根据需求选择...

    onTouch demo

    `onTouchEvent`或`onTouch`是Android中的一个关键接口方法,用于接收和处理用户的触摸事件。当用户在屏幕上进行操作时,系统会生成一系列的MotionEvent对象,这些对象包含了关于触摸事件的所有信息,如动作类型...

    详细分析Android中onTouch事件传递机制

    总结来说,Android中的`onTouch`事件传递机制是一个从底层到高层,从子视图到父视图的逐层分发过程,视图可以选择处理事件或让事件继续冒泡。理解这一机制对于构建用户友好的触摸界面至关重要,它使得开发者能够精确...

    onTouch测试

    在Android开发中,触摸事件是用户与应用交互的重要方式,`onTouch`是处理这些触摸事件的主要接口之一。本文将深入探讨`onTouch`事件传递机制,并通过`TestActivity`这个示例来解析其实现。 Android系统使用一个事件...

    Android中实现WebView点击图片放大显示

    本文将详细介绍如何在Android中实现这一功能。 首先,我们需要了解WebView的基本使用。WebView是Android SDK提供的一个类,它能够加载和显示网页内容。创建一个WebView实例,并将其添加到布局文件中是第一步: ```...

    android view 单击、双击和移动事件处理----TestViewEvent

    在Android中,我们主要使用OnClickListener、OnTouchListener和OnLongClickListener来处理不同的点击事件。`OnClickListener`用于处理单击事件,`OnTouchListener`用于处理触摸事件(包括按下、移动和释放),而`...

    Android 可拖拽移动的RecyclerView

    在Android开发中,RecyclerView是一个非常重要的组件,它用于展示可滚动的数据列表,具有高效和灵活的特点。本知识点主要探讨如何实现一个可拖拽移动的RecyclerView,让用户能够通过手势直接调整列表项的顺序。 ...

    android 磨砂透明效果的dialog

    在Android中,这种效果通常是通过设置背景图层的透明度和模糊度来实现的。磨砂效果使得背景图像变得不那么清晰,同时保持一定的可见性,这样可以突出Dialog中的主要内容。 为了创建一个带有磨砂透明效果的Dialog,...

    android手势操作滑动效果触摸屏事件处理.pdf

    本文将详细介绍如何在Android中处理触摸屏事件以及实现手势识别,特别是Fling和Scroll这两种常见手势。 首先,理解Android的事件处理机制至关重要。Android采用基于监听器(Listener)的事件模型,允许开发者注册感...

    Android开发之ImageView通过matrix实现两点缩放和图片拖动

    在Android中,我们可以通过setValues()方法设置矩阵的具体值,或者通过postTranslate()、preTranslate()、postScale()、preScale()等方法进行平移和缩放操作。 实现图片拖动的基本步骤如下: 1. 创建一个...

    Android代码-移动开发触摸控制实现代码.rar

    下面将详细阐述Android中触摸事件的处理机制及其相关知识点。 1. 触摸事件模型: Android使用MotionEvent类来表示用户的触摸行为,包括按下、移动、抬起等动作。这些事件通过View的onTouchEvent()方法传递给应用...

    【Android进阶】(2)2D绘制与控件绘制

    在Android中,自定义视图意味着扩展View或ViewGroup类,并重写onDraw()方法。在这个方法里,你需要调用Canvas的绘制方法,实现自己的绘制逻辑。例如: ```java public class CustomView extends View { @Override ...

    Android 滑动监听的实例详解

    在Android 开发中,ViewGroup和View是两种基本的UI组件,它们可以包含其他的视图组件,同时也会响应用户的触摸事件。理解它们在滑动监听中的行为对于设计良好的用户交互至关重要。 首先,我们来分析一下ScollBy和...

    android手触事件实例

    在Android开发中,手触事件(Touch Event)是用户与应用程序交互的重要部分。手触事件处理涉及到了Android的UI框架,主要包括View、 ViewGroup 和 MotionEvent 类。本实例将深入探讨如何在Android应用中处理这些事件...

    android 实现自定义隐藏式菜单

    下面将详细解释如何在Android中实现这样的自定义隐藏式菜单。 首先,我们需要创建一个布局文件来定义菜单项。这些菜单项通常包含ImageView(用于显示图标)和TextView(用于显示文字)。例如,可以创建一个名为`...

    android通过手势监听实现悬浮按钮

    首先,我们需要了解Android中的手势识别机制。Android提供了多种手势检测工具,如`GestureDetector`、`ScaleGestureDetector`、`SwipeRefreshLayout`等。在这个案例中,我们主要关注`GestureDetector`,它可以帮助...

Global site tag (gtag.js) - Google Analytics