触摸屏幕时,没搞懂每个事件的启动顺序。本文记录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的更多相关文章

  1. Android onTouchEvent, onClick及onLongClick的调用机制

    针对屏幕上的一个View控件,Android如何区分应当触发onTouchEvent,还是onClick,亦或是onLongClick事件? 在Android中,一次用户操作可以被不同的View按次序 ...

  2. Android onTouchEvent方法

    onTouchEvent方法简介 前面已经介绍了手机键盘事件的处理方法,接下来将介绍手机屏幕事件的处理方法onTouchEvent.该方法在View类中的定义,并且所有的View子类全部重写了该方法, ...

  3. Android onTouchEvent和setOnTouchListener中onTouch的区别

    OnTouchEvent()方法 是获取的对屏幕的各种操作,比如向左向右滑动,点击返回按钮等等. 属于一个宏观的屏幕触摸监控. OnTouchListener()方法 是获取某一个控件某一个View的 ...

  4. Android onTouchEvent事件中onTouch方法返回值介绍

    1.若return false说明没有成功执行onTouch事件,在执行完onTouch里面的代码之后,onTouch事件并没有结束.因此某些组件如Gallery会自动执行它所在view里onTouc ...

  5. Android 屏幕实现水龙头事件

    在android下,事件的发生是在监听器下进行,android系统能够响应按键事件和触摸屏事件.事件说明例如以下: onClick(View v)一个普通的点击button事件 boolean onK ...

  6. onInterceptTouchEvent和onTouchEvent调用时序(转)

    onInterceptTouchEvent和onTouchEvent调用时序 onInterceptTouchEvent()是ViewGroup的一个方法,目的是在系统向该ViewGroup及其各个c ...

  7. Android中的事件处理研究

    处理用户界面事件Handling UI Events 在Android上,不止一个途径来侦听用户和应用程序之间交互的事件.对于用户界面里的事件,侦听方法就是从与用户交互的特定视图对象截获这些事件.视图 ...

  8. andorid 下拉刷新

    1:android的下拉刷新操作是需要一个ListView,通过onTouchEvent来判断用户的手势操作,用户触摸屏幕并且下拉时,当下拉超过指定的设定高度时就提示用户进行刷新. 2:当进行刷新时, ...

  9. Android View的onTouchEvent和OnTouch区别

    还是以自定义的TestButton为例. 我们可以通过重写onTouchEvent方法来处理诸如down move up的消息: public class TestButton extends But ...

随机推荐

  1. 【转】DNS查询过程

    DNS查询过程 DNS的查询过程是指在客户端通过DNS服务器将一个IP地址转换为一个FQDN(Fully Qualified Domain Name,完全合格的域名),或将一个FQDN转化为一个IP地 ...

  2. 解决Linux平台下VMware出现"No 3d support is available from the host"或"Hardware graphics acceleration is not available" 错误

    错误日志: No 3d support is available from the host Hardware graphics acceleration is not available 解决方法: ...

  3. volist 自增序号 分页如何实现?

    TP框架模板中如何生成自增数据 {$_GET['p']*10-10+$i} /* 分页序号计算    */ function addnum($k,$num){     return ($k +1 ) ...

  4. 【Django】pip 安装和卸载 Django

    1.在dos命令中输入pip进行安装 注意:如果提示('pip' 不是内部或外部命令,也不是可运行的程序或批处理文件.) 那么先将pip添加到环境变量中,pip路径一般在python的安装路径下,例如 ...

  5. e.keycode详解

    function submitLoginForm(e) { e = window.event || e; if(e.keyCode == 13) { login(); } } keycode 8 = ...

  6. 如何处理JSON中的特殊字符 介绍几种解决方案

    http://www.nowamagic.net/librarys/veda/detail/216JSON 是适用于 Ajax 应用程序的一种有效格式,原因是它使 JavaScript 对象和字符串值 ...

  7. c# 操作Word总结

    在医疗管理系统中为保存患者的体检和治疗记录,方便以后的医生或其他人查看.当把数据保存到数据库中,需要新建很多的字段,而且操作很繁琐,于是想到网页的信息创建到一个word文本中,在显示的时,可以在线打开 ...

  8. python笔记-print输出

    print语句默认是输出一行后添加一个换行符 >>> for item in ['apple','ibm','google','oracle']: ... print item .. ...

  9. 第23章、OnFocuChangeListener焦点事件(从零开始学Android)

      在Android App应用中,OnFocuChangeListener焦点事件是必不可少的,我们在上一章的基础上来学习一下如何实现. 基本知识点:OnFocuChangeListener事件 一 ...

  10. The value of 'filter_horizontal[0]' must be a many-to-many field. The value of 'raw_id_fields[0]' must be a foreign key or a many-to-many field.

    在使用django admin的时候 我们遇到这个错误 <class 'Salesman.admin.UsrMngUserAdmin'>: (admin.E020) The value o ...