多点触控事件的麻烦



我试图了解多点触摸事件是如何工作的,但是我的代码没有像我预期的那样工作。只有当我迅速将三个或更多的手指放在屏幕上时,才能识别多重触摸:

@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);
}

相关内容

  • 没有找到相关文章

最新更新