繁体   English   中英

多点触控事件困扰

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM