indice giù down: 0 down MASK: 0 medio giù pointer down: 261 pointer down MASK: 5 medio su pointer up: 262 pointer up MASK: 6 indice su up: 1 up MASK: 1
indice giù down: 0 down MASK: 0 medio giù pointer down: 261 pointer down MASK: 5 indice su pointer up: 6 pointer up MASK: 6 medio su up: 1 up MASK: 1Quando c'è un solo dito giù viene riconosciuto come puntatore principale, quando ce ne sono due l'ultimo ad essere stato aggiunto viene riconosciuto come puntatore secondario.
Quando ci sono due dita giù, il primo a sollevarsi viene riconosciuto come puntatore secondario, quindi ne rimane uno viene riconosciuto come puntatore primario.
Però c'è una differenza:
L'ultimo bit del byte alto viene attribuito a 0 per il primo puntatore, a 1 per il puntatore secondario, ma quando il primo puntatore diventa secondario continua ad avere codice 0.
Estrapoliamo dunque il codice del puntatore...
OnTouchListener onTouchListener=new View.OnTouchListener(){ @Override public boolean onTouch(View v, MotionEvent event) { switch(event.getAction() & event.ACTION_MASK){ case MotionEvent.ACTION_DOWN: Log.e("event.getAction() down",""+event.getAction()); Log.e("event.getAction() down MASK",""+(event.getAction() & event.ACTION_MASK)); Log.e("CODICE DEL PUNTATORE",""+((event.getAction() & 65280)>>8)); break; case MotionEvent.ACTION_POINTER_DOWN: Log.e("event.getAction() pointer down",""+event.getAction()); Log.e("event.getAction() pointer down MASK",""+(event.getAction() & event.ACTION_MASK)); Log.e("CODICE DEL PUNTATORE",""+((event.getAction() & 65280)>>8)); break; case MotionEvent.ACTION_POINTER_UP: Log.e("event.getAction() pointer up",""+event.getAction()); Log.e("event.getAction() pointer up MASK",""+(event.getAction() & event.ACTION_MASK)); Log.e("CODICE DEL PUNTATORE",""+((event.getAction() & 65280)>>8)); break; case MotionEvent.ACTION_UP: Log.e("event.getAction() up",""+event.getAction()); Log.e("event.getAction() up MASK",""+(event.getAction() & event.ACTION_MASK)); Log.e("CODICE DEL PUNTATORE",""+((event.getAction() & 65280)>>8)); break; } return true; } };Con questo codice ho creato una maschera di due bytes con 0xFF00, in modo da isolare il byte alto, e poi l'ho spinto in fondo con l'operazione >>8.
Mi mostra che il codice, quando i punatori sono due, è di 0 per quello che è stato definito prima e 1 per quello secondario.
Quando il puntatore torna uno solo, peraltro, viene riassunto il codice 0 dal puntatore che prima era secondario con codice 1.
Nessun commento:
Posta un commento