Android事件机制之二:onTouch详解
《Android事件机制之一:事件传递和消费》一文总结了Android中的事件传递和消费机制。
在其中对OntachEvent中的总结中,不是很具体。本文将主要对onTach进行总结。
ontach是Android系统中整个事件机制的基础。Android中的其他事件,如onClick、onLongClick等都是以onTach为基础的。
onTach包括从手指按下到离开手机屏幕的整个过程,在微观形式上,具体表现为action_down、action_move和action_up等过程。
onTach两种主要定义形式如下:
1.在自定义控件中,常见的有重写onTouchEvent(MotionEvent ev)方法。如在开发中经常可以看到重写的onTouchEvent方法,
并且其中有针对不同的微观表现(action_down、action_move和action_up等)做出的相应判断,执行逻辑并可能返回不同的布尔值。
2.在代码中,直接对现有控件设置setOnTouchListener监听器。并重写监听器的onTouch方法。onTouch回调函数中有view和MotionEvent
参数,据此也可以针对不同的事件微观表现作出不同的处理。
对于这两种方式的区别,可以参见:http://blog.csdn.net/guolin_blog/article/details/9097463 一文。
同时,推荐另外一篇博客:http://blog.csdn.net/guolin_blog/article/details/9153747 。
需要注意的是:整体上,事件的微观表现遵循”事件传递和消费“一文,但是针对于action_down,需要有如下注意的地方:
1.在所有的事件微观表现中,action_down是整个事件的基础,是任何宏观事件的起始事件,一旦action_down return false,表示事件继续向外层冒泡,当有某一层的action_down
中return true,表示此层消费了此action_down事件,那么在接下里的action_move、action_up等事件中,将直接先传入此层中,且不管action_move、
action_up等返回false还是true,事件都不会继续冒泡到外层。事件由此被消费掉。
2.由此可以得知,action_down在整个事件传递中的重要作用。如果某层发生了action_move或者action_up微观事件,那么一定发发生过action_down微观事件。
关于setOnTouchListener、setOnClickListener和setOnLongClickListener:
Android中,有时候经常见到针对同一控件可能设置不同的事件监听器(如setOnTouchListener、setOnClickListener和setOnLongClickListener),对于这些事件监听器的执行顺序,
setOnTouchListener是最先执行的。并且只有当此空间完整走完action_down和action_up流程后,才可能调用performClick()方法,及调用onclick执行。而onLongClick则是在action_down
之后开始,并且是在一个新的线程中去判断按压的时间,条件满足则调用performLongClick()函数,及调用onLongClick()函数。
Android事件机制之二:onTouch详解的更多相关文章
- Android签名机制之---签名验证过程详解
一.前言 今天是元旦,也是Single Dog的嚎叫之日,只能写博客来祛除寂寞了,今天我们继续来看一下Android中的签名机制的姊妹篇:Android中是如何验证一个Apk的签名.在前一篇文章中我们 ...
- Android签名机制之---签名过程详解
http://www.2cto.com/kf/201512/455388.html 一.前言 又是过了好长时间,没写文章的双手都有点难受了.今天是圣诞节,还是得上班.因为前几天有一个之前的同事,在申请 ...
- Android内存解析(二)— 详解内存,内部存储和外部存储
总述 觉得十分有必要搞清楚内存,内部存储和外部存储的区别,还有我们在开发中真正将数据存在了手机的哪儿. 先提一个问题:手机设置的应用管理中,每个App下都有清除数据和清除缓存,清除的分别是哪里的数据? ...
- 详解C#泛型(二) 获取C#中方法的执行时间及其代码注入 详解C#泛型(一) 详解C#委托和事件(二) 详解C#特性和反射(四) 记一次.net core调用SOAP接口遇到的问题 C# WebRequest.Create 锚点“#”字符问题 根据内容来产生一个二维码
详解C#泛型(二) 一.自定义泛型方法(Generic Method),将类型参数用作参数列表或返回值的类型: void MyFunc<T>() //声明具有一个类型参数的泛型方法 { ...
- Android开发:文本控件详解——TextView(二)文字跑马灯效果实现
一.需要使用的属性: 1.android:ellipsize 作用:若文字过长,控制该控件如何显示. 对于同样的文字“Android开发:文本控件详解——TextView(二)文字跑马灯效果实现”,不 ...
- Android 应用程序之间内容分享详解(二)
转载请注明出处:http://blog.csdn.net/xiaanming/article/details/9428613 Android 应用程序之间内容分享详解(一) 之前给大家分享了你开发的应 ...
- Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)
[Android布局学习系列] 1.Android 布局学习之——Layout(布局)详解一 2.Android 布局学习之——Layout(布局)详解二(常见布局和布局参数) 3.And ...
- Android EventBus 3.0 实例使用详解
EventBus的使用和原理在网上有很多的博客了,其中泓洋大哥和启舰写的非常非常棒,我也是跟着他们的博客学会的EventBus,因为是第一次接触并使用EventBus,所以我写的更多是如何使用,源码解 ...
- ViewPager 详解(二)---详解四大函数
前言:上篇中我们讲解了如何快速实现了一个滑动页面,但问题在于,PageAdapter必须要重写的四个函数,它们都各有什么意义,在上节的函数内部为什么要这么实现,下面我们就结合Android的API说明 ...
随机推荐
- CentOS下SVN服务的启动与关闭
CentOS下SVN服务的启动与关闭 操作系统:CentOS 6.5 SVN版本:1.8.11 启动SVN服务: svnserve -d -r /home/svn /home/svn 为版本库的根 ...
- VB控件间的拖放
新建工程,放置控件Picture1,Text1,Text2,复制下面的代码运行 Text1和Text2可以互相拖放,也可以将Picture1拖放给Text1,Text2. Private Sub Fo ...
- 《SpringMVC从入门到放肆》十三、SpringMVC数据校验
上一章,我们学习了SpringMVC的自定义类型转换器,但是如果转换后的数据传递到Controller的方法中,忽然发现有某些属性为Null了,这怎么办?我们需要一种有效的数据校验机制,来对数据进行有 ...
- 关于如何在Visual Studio上仿真调试安卓的U3D应用
正巧最近需要开发一个安卓手机上的Unity3D游戏功能,想着既然要开发么,当然需要调试.本来的话一些基础功能是不需要使用仿真模拟器,直接在U3D的开发编辑器上就能调试,不过有一些安卓上才能执行,比如 ...
- TCPDF解决保存中文文件名的方法
PHP使用TCPDF生成PDF文件时,如果文件名是中文会被直接过滤掉,以下是TCPDF不能保存中文文件名的解决方法: 打开tcpdf.php文件,找到output函数,大约在8467行 或(7554) ...
- python语法_模块_os_sys
os模块:提供对此操作系统进行操作的接口 os.getcwd() 获取python运行的工作目录. os.chdir(r'C:\USERs') 修改当前工作目录. os.curdir 返回当前目录 ( ...
- App功能测试
App功能测试 1. 运行 1)App安装完成后的试运行,可正常打开软件. 2)App打开测试,是否有加载状态进度提示. 3)App页面间的切换是否流畅,逻辑是否正确. 4)注册 同表单编辑页面 用 ...
- js 操作本地sqlite
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...
- [Swift]LeetCode115. 不同的子序列 | Distinct Subsequences
Given a string S and a string T, count the number of distinct subsequences of S which equals T. A su ...
- [Swift]LeetCode576. 出界的路径数 | Out of Boundary Paths
There is an m by n grid with a ball. Given the start coordinate (i,j) of the ball, you can move the ...