我试图了解多点触摸事件是如何工作的,但我的代码并没有像我预期的那样运行。只有当我迅速地将三个或更多的手指放在屏幕上时,才能识别多次触摸:
@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;
}为什么我放在屏幕上的第二个手指没有被识别,为什么我把手指放在屏幕上的速度会影响多次触摸是否被识别?
发布于 2014-07-31 07:27:02
根据android的文档:
您应该始终使用方法getActionMasked(事件)(或者更好的是,可压缩版本MotionEventCompat.getActionMasked(事件))来检索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);
}https://stackoverflow.com/questions/25053014
复制相似问题