android onTouchEvent
触摸屏幕时,没搞懂每个事件的启动顺序。本文记录onTouchEvent发生时,每个事件启动的顺序。
测试代码
@Override
public boolean onTouchEvent(MotionEvent event) {
int pointCount = event.getPointerCount();
switch (pointCount) {
case 1:
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
Log.e("touch", "1 down-------");
break;
case MotionEvent.ACTION_MOVE:
Log.e("touch", "1 move-------");
break;
case MotionEvent.ACTION_UP:
Log.e("touch", "1 up-------");
break;
}
break;
case 2:
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_POINTER_DOWN:
Log.e("touch", "2 down-------");
break;
case MotionEvent.ACTION_MOVE:
Log.e("touch", "2 move-------");
break;
case MotionEvent.ACTION_POINTER_UP:
Log.e("touch", "2 up-------");
break;
}
break;
case 3:
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_POINTER_DOWN:
Log.e("touch", "3 down-------");
break;
case MotionEvent.ACTION_MOVE:
Log.e("touch", "3 move-------");
break;
case MotionEvent.ACTION_POINTER_UP:
Log.e("touch", "3 up-------");
break;
}
break;
}
return true;
输出结果
单点触摸
07-17 11:29:38.651 15874-15874/com.example.tony.ring E/touch: 1 down-------
07-17 11:29:38.664 15874-15874/com.example.tony.ring E/touch: 1 move-------
07-17 11:29:38.677 15874-15874/com.example.tony.ring E/touch: 1 up-------
两点触摸
07-17 11:30:36.610 15874-15874/com.example.tony.ring E/touch: 1 down-------
07-17 11:30:36.611 15874-15874/com.example.tony.ring E/touch: 1 move-------
07-17 11:30:36.612 15874-15874/com.example.tony.ring E/touch: 2 down-------
07-17 11:30:36.637 15874-15874/com.example.tony.ring E/touch: 2 move-------
07-17 11:30:36.637 15874-15874/com.example.tony.ring E/touch: 2 up-------
07-17 11:30:36.638 15874-15874/com.example.tony.ring E/touch: 1 up-------
或者
07-17 11:31:43.909 15874-15874/com.example.tony.ring E/touch: 1 down-------
07-17 11:31:43.910 15874-15874/com.example.tony.ring E/touch: 2 down-------
07-17 11:31:43.942 15874-15874/com.example.tony.ring E/touch: 2 move-------
07-17 11:31:43.943 15874-15874/com.example.tony.ring E/touch: 2 up-------
07-17 11:31:43.943 15874-15874/com.example.tony.ring E/touch: 1 up-------
三点触摸
07-17 11:32:46.598 15874-15874/com.example.tony.ring E/touch: 1 down-------
07-17 11:32:46.602 15874-15874/com.example.tony.ring E/touch: 2 down-------
07-17 11:32:46.604 15874-15874/com.example.tony.ring E/touch: 3 down-------
07-17 11:32:46.604 15874-15874/com.example.tony.ring E/touch: 3 move-------
07-17 11:32:46.604 15874-15874/com.example.tony.ring E/touch: 3 up-------
07-17 11:32:46.605 15874-15874/com.example.tony.ring E/touch: 2 move-------
07-17 11:32:46.605 15874-15874/com.example.tony.ring E/touch: 2 up-------
07-17 11:32:46.607 15874-15874/com.example.tony.ring E/touch: 1 up-------
或者
07-17 11:33:06.252 15874-15874/com.example.tony.ring E/touch: 1 down-------
07-17 11:33:06.254 15874-15874/com.example.tony.ring E/touch: 2 down-------
07-17 11:33:06.256 15874-15874/com.example.tony.ring E/touch: 3 down-------
07-17 11:33:06.271 15874-15874/com.example.tony.ring E/touch: 3 move-------
07-17 11:33:06.288 15874-15874/com.example.tony.ring E/touch: 3 move-------
07-17 11:33:06.288 15874-15874/com.example.tony.ring E/touch: 3 up-------
07-17 11:33:06.289 15874-15874/com.example.tony.ring E/touch: 2 up-------
07-17 11:33:06.289 15874-15874/com.example.tony.ring E/touch: 1 up-------
多点触摸时,有没有ACTION_MOVE的动作不能保证,
点击时肯定先是
1 down -> 2 down -> 3 down
释放时
3 up -> 2 up -> 1 up
Author
Tony Liu
2016-7-17, Shenzhen
android onTouchEvent的更多相关文章
- Android onTouchEvent, onClick及onLongClick的调用机制
针对屏幕上的一个View控件,Android如何区分应当触发onTouchEvent,还是onClick,亦或是onLongClick事件? 在Android中,一次用户操作可以被不同的View按次序 ...
- Android onTouchEvent方法
onTouchEvent方法简介 前面已经介绍了手机键盘事件的处理方法,接下来将介绍手机屏幕事件的处理方法onTouchEvent.该方法在View类中的定义,并且所有的View子类全部重写了该方法, ...
- Android onTouchEvent和setOnTouchListener中onTouch的区别
OnTouchEvent()方法 是获取的对屏幕的各种操作,比如向左向右滑动,点击返回按钮等等. 属于一个宏观的屏幕触摸监控. OnTouchListener()方法 是获取某一个控件某一个View的 ...
- Android onTouchEvent事件中onTouch方法返回值介绍
1.若return false说明没有成功执行onTouch事件,在执行完onTouch里面的代码之后,onTouch事件并没有结束.因此某些组件如Gallery会自动执行它所在view里onTouc ...
- Android 屏幕实现水龙头事件
在android下,事件的发生是在监听器下进行,android系统能够响应按键事件和触摸屏事件.事件说明例如以下: onClick(View v)一个普通的点击button事件 boolean onK ...
- onInterceptTouchEvent和onTouchEvent调用时序(转)
onInterceptTouchEvent和onTouchEvent调用时序 onInterceptTouchEvent()是ViewGroup的一个方法,目的是在系统向该ViewGroup及其各个c ...
- Android中的事件处理研究
处理用户界面事件Handling UI Events 在Android上,不止一个途径来侦听用户和应用程序之间交互的事件.对于用户界面里的事件,侦听方法就是从与用户交互的特定视图对象截获这些事件.视图 ...
- andorid 下拉刷新
1:android的下拉刷新操作是需要一个ListView,通过onTouchEvent来判断用户的手势操作,用户触摸屏幕并且下拉时,当下拉超过指定的设定高度时就提示用户进行刷新. 2:当进行刷新时, ...
- Android View的onTouchEvent和OnTouch区别
还是以自定义的TestButton为例. 我们可以通过重写onTouchEvent方法来处理诸如down move up的消息: public class TestButton extends But ...
随机推荐
- Mac下终端显示多彩化
终端使用 ls -G 自已添加 Gnu 颜色配置 alias 使用 基本用法: alias 的基本使用方法为:alias 新的命令='原命令 -选项/参数'.举例说明,alias l=‘ls -lsh ...
- Python continue
continue继续循环在循环过程中,可以用break退出当前循环,还可以用continue跳过后续循环代码,继续下一次循环.假设我们已经写好了利用for循环计算平均分的代码: L = [75, 98 ...
- 一个字符串是否在另外一个字符串数组里 Array.Exists 的用法 Array.IndexOf 用法
转: using System; class Program { static void Main() { string[] array = { "cat", "dot& ...
- javascript 创建对象的几种方式
1. //基于已有对象扩充其属性和方法var object = new Object(); object.name = "zhangsan"; object.sayName = f ...
- xml xpath dta笔记
xml: 有且只有一个根元素 默认utf-8 如果是中文且为不是utf-8的必须指定编码 声明的编码必须和文档的内容保持一致 well-formed XML :是否符合xml语法 valid xml: ...
- 剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)
一.移除性算法 (remove) C++ Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ...
- 字符编解码的故事(ASCII,GBK,Unicode,Utf-8区别)
很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们认为8个开关状态作为原子单位很好,于是他们把这称为"字节". 再后来,他们又做了一 ...
- [转]C#如何判断操作系统位数是32位还是64位
方法一: 对于C#来说,调用WMI是一种简单易行的方式.我们可以用Win32_Processor类里面的AddressWidth属性来表示系统的位宽.AddressWidth的值受CPU和操作系统的双 ...
- Java模拟公司置办货物系统(二)
採用MVC风格,将数据写入文件,模拟公司置办货物系统. A类表示普通员工,B类表示部门精力,C类表示採购部,D类表示资源管理部. 订单状态 1.表示申请状态 2.表示通过审批 3.表示未通过审批 4 ...
- Webkit初始化以及载入URL过程中各种对象的建立时序以及DOM树的建立详情分析
众所周知,Webkit须要创建DOM树. 为此它须要创建WebView, Chrome,Page,Frame, Document. Document Parser, DOM Tree ...