我试图了解多点触摸事件是如何工作的,但是我的代码没有像我预期的那样工作。只有当我迅速将三个或更多的手指放在屏幕上时,才能识别多重触摸:
@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;
}
为什么我放在屏幕上的第二个手指不被识别,为什么我把手指放在屏幕上的速度会影响我的多次触摸是否被识别?
根据android docs:
你应该总是使用getactionmask (event)方法(或者更好的是,兼容版本motioneventpat . getactionmask (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);
}