android 触摸事件、点击事件的区别

要弄清楚这个问题只要理解Android对事件处理的所谓消费(consume)概念即可,一个用户的操作会被传递到不同的View控件和同一个控件的不同监听方法处理,任何一个接收并处理了该次事件的方法如果在处理完后返回了true,那么该次event就算被完全处理了,其他的View或者监听方法就不会再有机会处理该event了。

onLongClick的发生是由单独的线程完成的,并且在ACTION_UP之前,而onClick的发生是在ACTION_UP后,因此同一次用户touch操作就有可能既发生onLongClick又发生onClick。这样是不是不可思议?所以及时向系统表示“我已经完全处理(消费)了用户的此次操作”,是很重要的事情。例如,我们如果在onLongClick()方法的最后return true,那么onClick事件就没有机会被触发了。

原文:http://www.open-open.com/lib/view/open1378910459772.html

时间: 2024-10-10 15:18:27

android 触摸事件、点击事件的区别的相关文章

Android代码学习--点击事件的几种写法

由来:常规的写法参见<写一个apk>,每次点击按钮,按钮先查找文本框等元素,然后再操作,其实查找操作是很费时的操作,因此将该定义放到Activity的onCreate中:Oncreate只会执行一次,这样Activity一旦执行,就先创建好控件们了. 第二种方法:通过匿名内部类的方法:就是button.setOnClickListener(new OnClickListener(){ //实现OnClickListener接口 @Override public void onClick(Vie

android的按钮点击事件

android的按钮点击事件 by 伍雪颖 开始学习android public void onclicklistener(View tager) { Intent intent = new Intent(); intent.setClass(Activity02.this, OtherActivity.class); Activity02.this.startActivity(intent); } <Button android:id = "@+id/myButton" and

android中listview点击事件失效的灵异事件

首先说明一下我想实现的功能: 点击某个item之后,让其颜色发生变化.如果变化网上有很多例子,我就不班门弄斧了.Listview之所以点击没有反应是因为上图中绿色部分(自己定义的一个继承BaseAdapter的adapter来适应listview)将listview的item覆盖了.现在点击的只是自定义的adapter中的convertView. 其次,自定义的adapter中包含一个ImageView和二个TextView.代码如下: <?xml version="1.0" e

Android 触摸事件 点击事件的分发机制 详解

最近发现团队里有些员工在做一些自定义控件的时候感觉比较吃力.尤其是做触摸事件这种东西的时候.很多人对机制并不理解.因为百度出来的东西都太理论化了.确实不好理解. 今天带大家坐几个小demo.帮助理解一下. 先从简单的view 的事件分发机制开始解释. 我们首先自定义一个工程 package com.example.testtouch; import android.app.Activity; import android.os.Bundle; import android.util.Log; i

Android 触摸事件 点击事件的分发机制 详解三---责任链模式

前面两节  我们讲述了 android 点击事件的分发流程.其实大家可以细细体会一下,这个分发的过程 始终是从顶层到下层.一层一层的按照顺序进行. 当然了,传到哪一层停止,我们可以通过重写某些方法来完成. 这个地方 android的开发人员很好的利用了 责任链模式来完成这边代码的编写. 下面我们就来讲一下 责任链模式到底是什么.以及如何运用. 大家知道 一个软件公司的基本架构就是 程序员----leader---project manager---boss 这种基础架构. 我们一般都会有team

Android 触摸事件 点击事件的分发机制 详解二

现在我们来看看 事件分发的流程.view group 怎么传递给view的. 首先自定义一个layout 1 package com.example.testtouch; 2 3 import android.content.Context; 4 import android.util.AttributeSet; 5 import android.util.Log; 6 import android.view.MotionEvent; 7 import android.widget.Linear

Android多次点击事件

android本次没有提供双击或者多次点击事件,需要我们自己实现. 思想:使用数组记录点击时的系统时间,如果当前点击事件发生后点击了3次并且当前的系统时间和第一次点击事件发生的时间的差值小于500则认为是连续点击的而且点击了3次. 使用数组很巧妙的控制了点击次数,因为数组默认初始值全部为0,每次点击都会为数组最后一个元素赋值,然后把数组所有元素左移一位,每移动一次第一次点击事件的那个值就左移一位了,如果左移3次了mHints[0]一定不为0,如果mHints[0]为0说明还没有点击3次,如果mH

Android Day01-Android按钮点击事件的4种写法

按钮点击事件,说白了就一个方法,setOnClickListener(OnClickListener). 只要传递的参数只要是OnClickListener接口的子类即可,很容易想到的2种实现方式就是匿名内部类和定义一个类实现这个接口.另外还有2种实现方法,有必要着重讲一下: 1.让Activity自身实现OnClickListener接口,传递setOnClickListener参数用this. 然后在onClick(View v)方法中,判断事件源id. switch(v.getId())

Android控件捕获点击事件的范围

View的Tween动画过程中点击事件的位置并不会因为动画位置的改变而改变,是因为在动画过程中layout的位置实际上没有变,因此曾经一度认为View的点击事件(其实不仅仅是点击事件,包括所有的触摸事件)触发的范围是该View在layout的时候指定的left,top,right,bottom.今天才发现不完全是这样的.一切都是因为平时看代码没有仔细一点所造成了对问题理解不全面. 在这里记录一下发现问题到处理问题的过程. 自定义这样一个ViewGroup,layout两个线性布局,左边的Line

Android笔记——Button点击事件几种写法

Button点击事件:大概可以分为以下几种: 匿名内部类 定义内部类,实现OnClickListener接口 定义的构造方法 用Activity实现OnClickListener接口 指定Button的onClick的属性 首先我们简单地定义一个带Button的xml布局文件 activity_main.xml: <Button android:id="@+id/bt1" android:layout_width="wrap_content" android: