Pergunta

I'm trying to distinguish between a single pointer tap (one finger), to a tap with two pointers (two fingers).
I have noticed that onSingleTapUp(...) is called only for MotionEvent.ACTION_UP,
while MotionEvent.ACTION_POINTER_UP can be recognized only from onTouchEvent(...).
Is there an API method for this case, or I must override onTouchEvent(...) and distinguish between those cases with MotionEvent.getPointerCount(...)?

public boolean onTouchEvent(MotionEvent event) { 

    if (event.getActionMasked() == MotionEvent.ACTION_UP) {
        Log.v("GESTURE", "onTouchEvent ACTION_UP");
    }

    if (event.getActionMasked() == MotionEvent.ACTION_POINTER_UP) {
        Log.v("GESTURE", "onTouchEvent ACTION_POINTER_UP");
    }
    this.mDetector.onTouchEvent(event);
    return true;
}


public boolean onSingleTapUp (MotionEvent event) {      

    if (event.getActionMasked() == MotionEvent.ACTION_UP) {
        Log.v("GESTURE", "onSingleTapUp ACTION_UP");
    }
}
Foi útil?

Solução

    @Override
    public boolean onTouchEvent(MotionEvent event){
       if(event.getPointerCount() > 1){
       //do some math for the multiple pointers using event.getPointerId() to refer to diff. pointers.
       }else{
            // it's a one-touch event, do regular stuff.
       }
    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top