我试图了解多点触控事件的工作原理,但我的代码并没有按照我的预期行事。只有当我随后快速将三个或更多手指放在屏幕上时,才能识别多个触摸:
@Override
public boolean onTouchEvent(MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
doSomeUnimportantStuff();
return true;
case MotionEvent.ACTION_POINTER_DOWN:
for (int i = 0;i < event.getPointerCount()-1;i++) {
Log.d("Multi-Touch", Float.toString(event.getX(i)));
return true;
}
}
return true;
}
为什么我在屏幕上放置的第二根手指没有被识别,为什么我将手指放在屏幕上的速度会影响是否识别出多个触摸?
答案 0 :(得分:2)
根据android文档:
你应该总是使用方法getActionMasked(event)(或者更好的是,兼容性版本MotionEventCompat.getActionMasked(event)来检索MotionEvent的动作
至于知道您是否有单个或多个触摸事件,请使用以下代码片段,再次从Android文档中获取。你基本上检查是否有多个指针,如果有,那么显然屏幕上有多个触摸。
if (event.getPointerCount() > 1) {
//MULTI TOUCH EVENT IS TRIGGERED!
// The coordinates of the current screen contact, relative to
// the responding View or Activity.
xPos = (int)MotionEventCompat.getX(event, index);
yPos = (int)MotionEventCompat.getY(event, index);
} else {
// Single touch event
xPos = (int)MotionEventCompat.getX(event, index);
yPos = (int)MotionEventCompat.getY(event, index);
}