Android 多点触控实践解析及加入MotionEvent.ACTION_MASK的原因
2015-04-09 10:36
417 查看
Activity中的onTouchEvent(MotionEvent
event);
Override onTouchEvent(...)为以下形式:
onTouchEvent(MotionEvent event){
return super.onTouchEvent(event);
}
默认的情况下super.onTouchEvent(...)返回false,所以只有一个触摸点被传送。当把return的值改成true的时候,系统在得到true指令后,获得触摸点的监听器并没有被置失效,多点触控就得以实现了。当把值改为true之后,在方法内加个输出语句标记一下,可以看见event在多点触控的情况下,提取event内触碰点个数,会有有相应改变。不断得到屏幕事件的各种值,通过switch语句的筛选,就可以得到屏幕受到的触摸的情况。下面贴代码。其实跟GestureDetector常用方法差不多。
import android.view.MotionEvent;
public class CMultiTouchManager {
private OnCMultiTouchListener cOnCMultiTouchListener = null;
public CMultiTouchManager(){}
public void setOnCMultiTouchListener(OnCMultiTouchListener listener){
if (listener == null) {
throw new IllegalStateException("Listener could be null !");
}
this.cOnCMultiTouchListener=listener;
}
public CMultiTouchManager(OnCMultiTouchListener listener) {
if (listener == null) {
throw new IllegalStateException("Listener could be null !");
}
this.cOnCMultiTouchListener = listener;
}
public void putTouchEvent(MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
CMultiTouchManager.this.cOnCMultiTouchListener.onDown(
event.getPointerId(event.getPointerCount() - 1),
event.getX(), event.getY());
break;
case MotionEvent.ACTION_POINTER_DOWN:
CMultiTouchManager.this.cOnCMultiTouchListener.onDown(
event.getPointerId(event.getPointerCount() - 1),
event.getX(), event.getY());
break;
case MotionEvent.ACTION_UP:
CMultiTouchManager.this.cOnCMultiTouchListener.onUp(
event.getPointerId(event.getPointerCount() - 1),
event);
Override onTouchEvent(...)为以下形式:
onTouchEvent(MotionEvent event){
return super.onTouchEvent(event);
}
默认的情况下super.onTouchEvent(...)返回false,所以只有一个触摸点被传送。当把return的值改成true的时候,系统在得到true指令后,获得触摸点的监听器并没有被置失效,多点触控就得以实现了。当把值改为true之后,在方法内加个输出语句标记一下,可以看见event在多点触控的情况下,提取event内触碰点个数,会有有相应改变。不断得到屏幕事件的各种值,通过switch语句的筛选,就可以得到屏幕受到的触摸的情况。下面贴代码。其实跟GestureDetector常用方法差不多。
import android.view.MotionEvent;
public class CMultiTouchManager {
private OnCMultiTouchListener cOnCMultiTouchListener = null;
public CMultiTouchManager(){}
public void setOnCMultiTouchListener(OnCMultiTouchListener listener){
if (listener == null) {
throw new IllegalStateException("Listener could be null !");
}
this.cOnCMultiTouchListener=listener;
}
public CMultiTouchManager(OnCMultiTouchListener listener) {
if (listener == null) {
throw new IllegalStateException("Listener could be null !");
}
this.cOnCMultiTouchListener = listener;
}
public void putTouchEvent(MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
CMultiTouchManager.this.cOnCMultiTouchListener.onDown(
event.getPointerId(event.getPointerCount() - 1),
event.getX(), event.getY());
break;
case MotionEvent.ACTION_POINTER_DOWN:
CMultiTouchManager.this.cOnCMultiTouchListener.onDown(
event.getPointerId(event.getPointerCount() - 1),
event.getX(), event.getY());
break;
case MotionEvent.ACTION_UP:
CMultiTouchManager.this.cOnCMultiTouchListener.onUp(
event.getPointerId(event.getPointerCount() - 1),
相关文章推荐
- android多点触控统一的原理(使用event.getAction()&MotionEvent.ACTION_MASK的原因)
- 多点触控之MotionEvent.ACTION_MASK作用
- android多点触控统一的原理(使用 event.getAction()&MotionEvent.ACTION_MASK的原因)
- android多点触控统一的原理(使用 event.getAction()&MotionEvent.ACTION_MASK的原因)
- event.getAction()&MotionEvent.ACTION_MASK的原因
- android多点触控统一的原理(使用 event.getAction()&MotionEvent.ACTION_MASK的原因)
- android多点触控统一的原理(使用 event.getAction()&MotionEvent.ACTION_MASK的原因)
- android多点触控统一的原理(使用 event.getAction()&MotionEvent.ACTION_MASK的原因)
- 多点触控之MotionEvent.ACTION_MASK作用
- Androin学习笔记五十六: android多点触控统一的原理(使用 event.getAction()&MotionEvent.ACTION_MASK的原因)
- 多点触控之MotionEvent.ACTION_MASK作用
- android中MotionEvent.ACTION_CANCEL事件如何被触发?
- 多点触控事件处理 ev.getAction() & MotionEvent.ACTION_MASK
- Android 自定义view之后只能监听到MotionEvent.ACTION_DOWN的解决办法
- android 触控操作 MotionEvent【转】
- Android onTouchEvent的MotionEvent.ACTION_UP不响应
- android中MotionEvent.ACTION_CANCEL事件如何被触发?
- android中MotionEvent.ACTION_CANCEL事件如何被触发?
- android中MotionEvent.ACTION_CANCEL事件如何被触发?
- android中MotionEvent.ACTION_CANCEL事件是什么意思,如何触发