【Android开发】事件类MotionEvent的一些认识
来源:互联网 发布:动漫海报淘宝店推荐 编辑:程序博客网 时间:2024/06/08 07:36
一、动作常量,ACTION_...
ACTION_DOWN 单点触摸动作
ACTION_MOVE 触摸点移动动作
ACTION_UP 单点触摸离开动作
ACTION_POINTER_DOWN 多点触摸动作
ACTION_POINTER_UP 多点触摸离开动作
掩码常量
ACTION_MASK = 0X000000ff 动作掩码
ACTION_POINTER_INDEX_MASK = 0X0000ff00 触摸点索引掩码
二、相关方法详解
getAction()方法返回的是int类型,用到的只有低16位
其中:低八位是动作的表示,高8位是触摸点索引值的表示(单点为0,双点为1)
getActionMasked()方法是传来的动作值和ACTION_MASK(动作掩码)相与,把索引值清0,即获得纯动作值。
getActionIndex()方法是传来的动作值和ACTION_POINTER_INDEX_MASK(触摸点索引掩码)相与,得到纯索引值(0或者1)
getX(int pointerIndex)方法是指定触摸索引的X坐标
getY(int pointerIndex)方法是指定触摸索引的Y坐标
(pointerIndext=0表示单点触摸,=1表示双点触摸)
三、onTouch()方法或者是onTouchEvent()方法使用
在设置事件时我们有2种设置的方式,一种是委托式一种是回调式。第一种就是将事件的处理委托给监听器处理,你可以定义一个View.OnTouchListener接口的子类作为监听器,其中有onTouch()方法。而第二种是重写View类自己本身的onTouchEvent方法,也就是控件自己处理事件。onTouch方法接收一个MotionEvent参数和一个View参数,而onTouchEvent方法仅接收MotionEvent参数。这是因为监听器可以监听多个View控件的事件。通过MotionEvent方法getation可以得到该Motionevent具体是哪个操作如ACTION_DOWN
注意:如果都覆写了两个方法,系统会执行监听器中的回调方法
四、总结:
要进行动作的处理,推荐使用switch结构,判断变量为:getActionMasked().这样里面判断的动作可以为单点触摸,多点触摸。
例子:
@Override
public boolean onTouchEvent(MotionEvent e){
switch(e.getActionMasked()){
case MotionEvent.ACTION_DOWN:
System.out.println("singleDown");
break;
case MotionEvent.ACTION_UP:
System.out.println("singleUp");
break;
case MotionEvent.ACTION_MOVE:
// System.out.println("move");
break;
case MotionEvent.ACTION_POINTER_DOWN:
System.out.println("doubleDown");
break;
case MotionEvent.ACTION_POINTER_UP:
System.out.println("doubleUp");
break;
}
return true;
}
如:两指手指同时触摸屏幕,会出现
singleDown
doubleDown
同时离开的时候,会出现:
doubleUp
singleUp
对于以上结果,发现规律了没有,可以利用这点,来实现单点拖动图片,多点缩放图片的效果了,关于这点,在之后我会发表实现的原理。
android sdk对于这个类的描述中就有这么一句:
For efficiency, motion events with ACTION_MOVE may batch together multiple movement samples within a single object.
我翻译下:"出于效率的考虑,事件代码为ACTION_MOVE的Motion,会在一个MotionEvent对象中包含多个移动数据采样."
这一句大家慢慢参详吧
- 【Android开发】事件类MotionEvent的一些认识
- android 学习之触摸事件 -- 认识MotionEvent
- Android移动开发-手势事件处理MotionEvent的实现
- 触摸事件类MotionEvent的一些小细节
- Android的触摸事件MotionEvent event
- Android的MotionEvent和事件处理
- Android中触摸事件MotionEvent的来源
- Android模拟MotionEvent事件
- 关于android中MotionEvent认识
- 关于android中MotionEvent认识
- 关于android中MotionEvent认识
- Android开发---MotionEvent(一)
- 详细剖析 android onInterceptTouchEvent(MotionEvent event) 和 onTouchEvent(MotionEvent event) 的事件传递机制
- 详细剖析 android onInterceptTouchEvent(MotionEvent event) 和 onTouchEvent(MotionEvent event) 的事件传递机制
- Android 手势&触摸事件 MotionEvent
- android MotionEvent.ACTION_DOWN 事件丢失
- Android事件处理之MotionEvent
- Android 手势&触摸事件 MotionEvent
- 协方差矩阵
- http权威指南读书笔记(一)
- Sicily 1134 积木分发
- PRTX SDK 5.0 C#即时通讯IM开发实例教程一(登录)
- maven入门
- 【Android开发】事件类MotionEvent的一些认识
- 将单字节数字组装成字符串
- 只要是在公司“混”,此文对新人&旧人都有好处!
- UVA 152 - Tree's a Crowd
- Android 应用集成百度地图开发和注意事项
- http权威指南学习笔记(二)
- 教你更换Notepad++主题
- uva11401
- python的沙盒环境--virtualenv