Le code suivant est ce que j'ai essayé d'utiliser pour le multitouch. Doigt un est réglé correctement et se déplace lorsque je fais glisser mon doigt. Doigt deux apparaît et disparaît quand je touche et relâche mon doigt, mais il ne bouge jamais. Une idée de ce qui ne va pas? J'ai lu developers blog Je ne comprends toujours pas quels sont les problèmes.Android Multitouch - Deuxième doigt ACTION.MOVE ignoré
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction() & MotionEvent.ACTION_MASK;
int pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_ID_MASK) >> MotionEvent.ACTION_POINTER_ID_SHIFT;
int pointerId = event.getPointerId(pointerIndex);
switch (action) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_POINTER_DOWN:
if (pointerId == 0)
{
fingerOneDown = 1;
fingerOneX = event.getX(pointerIndex);
fingerOneY = event.getY(pointerIndex);
}
if (pointerId == 1)
{
fingerTwoDown = 1;
fingerTwoX = event.getX(pointerIndex);
fingerTwoY = event.getY(pointerIndex);
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
case MotionEvent.ACTION_CANCEL:
if (pointerId == 0)
{
fingerOneDown = 0;
fingerOneX = event.getX(pointerIndex);
fingerOneY = event.getY(pointerIndex);
}
if (pointerId == 1)
{
fingerTwoDown = 0;
fingerTwoX = event.getX(pointerIndex);
fingerTwoY = event.getY(pointerIndex);
}
break;
case MotionEvent.ACTION_MOVE:
if (pointerId == 0)
{
fingerOneDown = 1;
fingerOneX = event.getX(pointerIndex);
fingerOneY = event.getY(pointerIndex);
}
if (pointerId == 1)
{
fingerTwoDown = 1;
fingerTwoX = event.getX(pointerIndex);
fingerTwoY = event.getY(pointerIndex);
}
break;
}
return true;
}
Est-ce un bug? J'ai le même comportement étrange. J'ai cherché dans Google et d'autres personnes l'ont aussi. –
Je ne sais pas s'il s'agit d'un bug, mais ceci est une préoccupation documentée et l'itération à travers le pointerIds le résout. Si quelque chose, il pourrait juste être une décision de conception étrange. –
Merci, c'était très utile !!! – Jbecwar