[英]Trouble with multi-touch events
我试图了解多点触摸事件的工作原理,但是我的代码未按预期运行。 仅当我随后迅速将三个或更多个手指放在屏幕上时,才能识别出多次触摸:
@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:
您应该始终使用方法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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.