Il seguente codice è quello che stavo cercando di usare per il multitouch. Il dito uno è impostato correttamente e si muove quando trascino il dito. Il dito due appare e scompare quando tocco e rilasci il dito, ma non si muove mai. Qualche idea di cosa c'è che non va?Android Multitouch - Second Finger ACTION.MOVE Ignorato
Ho letto developers blog Ancora non capisco quali sono i problemi.
@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;
}
Si tratta di un errore? Ho lo stesso strano comportamento. Ho cercato su Google e alcune altre persone hanno anche questo. –
Non so se si tratta di un bug, ma questa è una preoccupazione documentata e l'iterazione tramite pointerId lo risolve. Se mai, potrebbe essere solo una strana decisione di progettazione. –
Grazie, è stato molto utile !!! – Jbecwar