Voglio catturare la direzione del movimento delle dita sul telefono touch Android. Se un utente fa scivolare il dito in su/giù/sinistra/destra, voglio catturare questa direzione. Come posso trovare questo? Grazie.Come catturare la direzione del movimento delle dita nel telefono Android?
risposta
Implementare onTouchEvent(), e calcolare dx e dy da cui l'utente preme verso il basso e solleva. Puoi usare questi valori per capire la direzione del movimento.
float x1, x2, y1, y2, dx, dy;
String direction;
switch(event.getAction()) {
case(MotionEvent.ACTION_DOWN):
x1 = event.getX();
y1 = event.getY();
break;
case(MotionEvent.ACTION_UP): {
x2 = event.getX();
y2 = event.getY();
dx = x2-x1;
dy = y2-y1;
// Use dx and dy to determine the direction of the move
if(Math.abs(dx) > Math.abs(dy)) {
if(dx>0)
direction = "right";
else
direction = "left";
} else {
if(dy>0)
direction = "down";
else
direction = "up";
}
}
}
La soluzione migliore sarebbe occuparsi di MotionEvent che si ottiene da una richiamata di View.OnTouchListener(). Gli eventi di movimento tengono traccia di come stai interagendo attualmente con la Vista tramite la sua proprietà di azione.
Immagino che tu possa calcolare in quale direzione qualcuno fa scorrere il dito esaminando la proprietà di azione di MotionEvents e i valori x/y di dove si è verificato l'evento di movimento.
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
oldX= event.getX();
oldY= event.getY();
break;
case MotionEvent.ACTION_MOVE:
int newX = motionEvent.getX();
int newY = motionEvent.getY();
int deltaX = oldX - newX;
int deltaY = oldY - newY;
if(Math.abs(deltaY)>Math.abs(deltaX))
//Motion in Y direction.
else
// Motion in X direction.
break;
}
Ci sono molti altri metodi disponibili per l'oggetto MotionEvent per uso pure: http://developer.android.com/reference/android/view/MotionEvent.html
l'assegno di fondo dovrebbe essere 'if (Math.abs (DeltaY)> Math.abs (deltaX))' – tibbi
@tibbi fisso, grazie! –
- 1. Android - Come gestire due tocco delle dita
- 2. Catturare clic sul pulsante nativo nel telefono Android in javascript
- 3. Direzione di accelerazione lineare per tracciare il movimento verso l'alto e il basso del telefono
- 4. Ottieni la posizione delle dita sul touchpad
- 5. Come tracciare la punta delle dita in OpenCV o OpenFrameworks?
- 6. Sensore direzione Android
- 7. Formattazione del numero di telefono nel formato E164 in Android
- 8. Android - Cattura schermo del telefono come film
- 9. Spegnimento programmato del telefono Android
- 10. Come costruire Android senza l'applicazione del telefono?
- 11. Telefono Android come mouse del computer
- 12. Modificare la direzione del testo UITextView
- 13. Sviluppo giochi Android - Spostamento del telefono
- 14. movimento browniano delle particelle con le direzioni
- 15. iphone riconosce forme diverse con movimento del dito
- 16. La direzione della bussola è diversa a seconda dell'orientamento del telefono
- 17. UITouch tocca Direzione e velocità del dito spostate
- 18. Applicazione Android Come ritardare l'avvio del servizio all'avvio del telefono
- 19. Come calcolare la direzione media di due vettori
- 20. Come ottenere la direzione del mouse da coordinate del mouse
- 21. Come posso catturare SIGINT nel threading del programma python?
- 22. rilevamento del movimento VLCj
- 23. Come monitorare continuamente la posizione di un telefono cellulare Android?
- 24. Tre dita pizzico gesto
- 25. Personalizzazione della direzione di scorrimento del layout delle schede
- 26. memoria interna telefono Android
- 27. Forzare la direzione del testo per LeadingMarginSpan2
- 28. Come ottenere la direzione del testo in Android e modificare il layout in modo dinamico in base alla direzione?
- 29. Come applicare la semantica del movimento quando un vettore cresce?
- 30. Riavvio del telefono [Android - Installazione app]
Buona risposta, ma ho trovato alcuni errori di battitura e ho dovuto portare alcune di quelle variabili a un livello superiore per renderle mutabili dall'interno dello switch. –
Per il secondo caso di commutazione ho utilizzato ACTION_MOVE anziché ACTION_UP perché in uno swap di ViewPager viene richiamato senza ACTION_UP. Ho una ScrollView con orientamento verticale detenuta da un ViewGroup e questa è una pagina ViewPager. Scorri su ScrollView cambia pagina invece di non rispondere. caso MotionEvent.ACTION_MOVE: float dx = event.getX() - x1; float dy = event.getY() - y1; if (Math.abs (dx) <= Math.abs (dy)) {// scroll verticale v.getParent(). RequestDisallowInterceptTouchEvent (true); } else {v.getParent(). RequestDisallowInterceptTouchEvent (false);} break; –
ScrollView con orientamento verticale nidificato all'interno di un altro ScrollView, tenuto da un ViewGroup che intendevo. –