在执行event.getAction()
时,如果我用3根手指触摸。让我们按触摸的顺序将它们称为手指0 1 2,如果我将2移开,则将其1替换为MotionEvent.ACTION_POINTER_UP
,同样,当我放下手指时,MotionEvent.ACTION_POINTER_DOWN
也不会转换为。但是,当需要时,切换仍将转到MotionEvent.ACTION_MOVE
。但是,当我将开关的参数更改为event.getActionMasked()
时,所有情况将被正确调用。我想了解为什么会这样,因为在我的单点触控开关语句中,event.getAction()
可以正常工作。
//replace with getAction(), first and third case don't always get called. Only sometimes.
switch(event.getActionMasked())
{
case MotionEvent.ACTION_POINTER_DOWN:
prevZoomX = Math.abs(x1-x2);
prevZoomY = Math.abs(y1-y2);
break;
case MotionEvent.ACTION_MOVE:
float deltaX = (Math.abs(x1-x2) - prevZoomX);
float deltaY = (Math.abs(y1-y2) - prevZoomY);
Log.d("zoom","dx: " + deltaX/(mDensity/2) + " prevZoomX " + prevZoomX);
Log.d("zoom","dy: " + deltaY/(mDensity/2) + " prevZoomY " + prevZoomY);
mRenderer.zoom = Math.abs(deltaX) > Math.abs(deltaY) ? deltaX/(mDensity/2) : deltaY/(mDensity/2);
Log.d("zoom","" + mRenderer.zoom);
prevZoomX = Math.abs(x1-x2);
prevZoomY = Math.abs(y1-y2);
break;
case MotionEvent.ACTION_POINTER_UP:
Log.d("finger","fingers left: " + event.getPointerCount());
break;
}
最佳答案
从MotionEvent documentation:
考虑使用getActionMasked()和getActionIndex()来检索单独的掩码操作和指针索引。
我在想同样的事情,我认为这句话意味着getAction()
不支持多个指针。