- 浏览: 83805 次
- 性别:
- 来自: 北京
文章分类
最新评论
原文地址: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和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 SDK下载速度慢无法更新?使用国内镜像站加速
2016-01-29 18:18 720https://blog.kuoruan.com/24.htm ... -
探秘腾讯Android手机游戏平台之不安装游戏APK直接启动法
2014-08-01 12:02 395原文地址:http://blog.zhourunsheng.c ... -
关于ViewPager和Fragment
2014-07-07 14:18 1006原文地址:http://www.cnblogs.com/iho ... -
Android移动操作系统的脆弱性分类研究
2014-03-18 14:46 615下载地址:http://www.paper.edu.cn/re ... -
Android实战技巧:深入解析AsyncTask
2014-03-06 11:21 342原文地址:http://blog.csdn ... -
Ubuntu android真机调试
2014-03-06 11:01 444关闭adb服务,切换到root,重启adb服务,离开root ... -
64位Ubuntu配置android环境报错(...adb": error=2, 没有那个文件或目录)
2014-02-07 13:29 577原文地址:http://blog.csdn.net/jayho ... -
【Android 声音处理】MediaPlayer和SoundPool
2014-01-14 17:08 1889原文地址:http://blog.sina ... -
Android自定义组件之一:View详解
2013-07-15 16:08 755原文地址:http://www.eoeandroid.com/ ... -
Android中error inflating class fragment
2013-06-19 17:21 1085原文地址:http://blog.csdn.net/qp120 ... -
拿来主义Android优秀开源项目
2013-06-05 11:57 885http://dengzhangtao.iteye.com/b ... -
android sqlite db-journal文件产生原因及说明
2013-06-05 11:37 3553原文地址:http://blog.csdn.net/chthq ... -
Android系统自带Camera方向判别
2013-05-22 16:40 661使用了OrientationEventListener, 也就 ... -
Android源码编译整理总结
2013-01-08 11:37 677原文地址:http://www.cnblogs.com/hoj ... -
安卓图表引擎AChartEngine(一) - 简介
2012-12-20 17:47 956原文地址:http://blog.csdn.net/lk_bl ... -
微技巧:Android手机隐藏指令大全
2012-12-07 11:36 761原文地址:http://news.xinhuanet.com/ ... -
自定义控件(attrs定义属性的使用)
2012-12-04 11:38 1145这里为了演示使用自定义变量,字体大小改用自定义的属性。 首先 ... -
二进制在数学中的妙用
2012-11-14 15:50 798原文地址:http://blog.csdn.net/hackb ... -
国外程序员推荐:每个程序员都应读的书
2012-11-06 10:58 796原文地址:http://blog.jobbole.com/58 ... -
android 程序开发的插件化 模块化方法 之一
2012-11-02 10:47 913http://www.cnblogs.com/hangxin1 ...
相关推荐
在Android开发中,触摸事件处理是用户界面交互的关键部分。`onTouchEvent` 是一个重要的方法,用于接收并处理用户对屏幕的触摸操作。本文将详细介绍`onTouchEvent`中`onTouch`方法的返回值及其影响。 `onTouchEvent...
总结来说,`setOnTouchListener`和`onTouchEvent`是Android中处理触摸事件的两种主要方式,它们提供了丰富的交互可能性,帮助开发者构建出响应用户触摸操作的动态界面。理解并熟练运用这些方法对于开发高质量的...
以上三种方式都可以有效地处理Android中的`ontouch`事件,选择哪种方式主要取决于你的项目需求和个人编程风格。在实际开发中,通常会根据功能复杂性和代码组织结构来决定采用哪种实现方式。无论选择哪种方式,确保...
首先,`onTouch`事件是Android中用于处理触摸屏事件的接口,它通过`View.OnTouchListener`实现。当用户与屏幕进行交互时,`onTouch`方法会被调用,接收到一个`MotionEvent`对象,该对象包含了触摸事件的详细信息,如...
了解`onTouch`和`onTouchEvent`的差异和工作原理对于构建响应灵敏的Android应用至关重要。合理地利用这两个方法可以创建出丰富的用户交互体验,提供定制化的触摸事件处理逻辑。在实际开发中,开发者可以根据需求选择...
`onTouchEvent`或`onTouch`是Android中的一个关键接口方法,用于接收和处理用户的触摸事件。当用户在屏幕上进行操作时,系统会生成一系列的MotionEvent对象,这些对象包含了关于触摸事件的所有信息,如动作类型...
总结来说,Android中的`onTouch`事件传递机制是一个从底层到高层,从子视图到父视图的逐层分发过程,视图可以选择处理事件或让事件继续冒泡。理解这一机制对于构建用户友好的触摸界面至关重要,它使得开发者能够精确...
在Android开发中,触摸事件是用户与应用交互的重要方式,`onTouch`是处理这些触摸事件的主要接口之一。本文将深入探讨`onTouch`事件传递机制,并通过`TestActivity`这个示例来解析其实现。 Android系统使用一个事件...
本文将详细介绍如何在Android中实现这一功能。 首先,我们需要了解WebView的基本使用。WebView是Android SDK提供的一个类,它能够加载和显示网页内容。创建一个WebView实例,并将其添加到布局文件中是第一步: ```...
在Android中,我们主要使用OnClickListener、OnTouchListener和OnLongClickListener来处理不同的点击事件。`OnClickListener`用于处理单击事件,`OnTouchListener`用于处理触摸事件(包括按下、移动和释放),而`...
在Android开发中,RecyclerView是一个非常重要的组件,它用于展示可滚动的数据列表,具有高效和灵活的特点。本知识点主要探讨如何实现一个可拖拽移动的RecyclerView,让用户能够通过手势直接调整列表项的顺序。 ...
在Android中,这种效果通常是通过设置背景图层的透明度和模糊度来实现的。磨砂效果使得背景图像变得不那么清晰,同时保持一定的可见性,这样可以突出Dialog中的主要内容。 为了创建一个带有磨砂透明效果的Dialog,...
本文将详细介绍如何在Android中处理触摸屏事件以及实现手势识别,特别是Fling和Scroll这两种常见手势。 首先,理解Android的事件处理机制至关重要。Android采用基于监听器(Listener)的事件模型,允许开发者注册感...
在Android中,我们可以通过setValues()方法设置矩阵的具体值,或者通过postTranslate()、preTranslate()、postScale()、preScale()等方法进行平移和缩放操作。 实现图片拖动的基本步骤如下: 1. 创建一个...
下面将详细阐述Android中触摸事件的处理机制及其相关知识点。 1. 触摸事件模型: Android使用MotionEvent类来表示用户的触摸行为,包括按下、移动、抬起等动作。这些事件通过View的onTouchEvent()方法传递给应用...
在Android中,自定义视图意味着扩展View或ViewGroup类,并重写onDraw()方法。在这个方法里,你需要调用Canvas的绘制方法,实现自己的绘制逻辑。例如: ```java public class CustomView extends View { @Override ...
在Android 开发中,ViewGroup和View是两种基本的UI组件,它们可以包含其他的视图组件,同时也会响应用户的触摸事件。理解它们在滑动监听中的行为对于设计良好的用户交互至关重要。 首先,我们来分析一下ScollBy和...
在Android开发中,手触事件(Touch Event)是用户与应用程序交互的重要部分。手触事件处理涉及到了Android的UI框架,主要包括View、 ViewGroup 和 MotionEvent 类。本实例将深入探讨如何在Android应用中处理这些事件...
下面将详细解释如何在Android中实现这样的自定义隐藏式菜单。 首先,我们需要创建一个布局文件来定义菜单项。这些菜单项通常包含ImageView(用于显示图标)和TextView(用于显示文字)。例如,可以创建一个名为`...
首先,我们需要了解Android中的手势识别机制。Android提供了多种手势检测工具,如`GestureDetector`、`ScaleGestureDetector`、`SwipeRefreshLayout`等。在这个案例中,我们主要关注`GestureDetector`,它可以帮助...