spostare a sinistra, a destra, su e giù a seconda della velocità o di altre variables

ho una class estesa dal semplice gesto e sto lavorando con il metodo onfling:

class MyGestureListener extends GestureDetector.SimpleOnGestureListener{ @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // TODO Auto-generated method stub float e1_X = e1.getX(); float e1_Y = e1.getY(); float e2_X = e1.getX(); float e2_Y = e2.getY(); if(velocityX > 0 && velocityX > velocityY){ text.setText("Swipe left"); }else if(velocityX < 0 && velocityX < velocityY){ text.setText("Swipe right"); }else if(velocityY < 0 && velocityX > velocityY){ text.setText("Swipe down"); }else if(velocityY > 0 && velocityX < velocityY){ text.setText("Swipe up"); } return super.onFling(e1, e2, velocityX, velocityY); } } 

So che dipende da alcuni angoli, ma non posso farlo, ho provato con la velocityX e velocityY, funziona solo se lo fai con precisione. Ma quello che voglio è un angolo di "errore": se si passa diagonalmente ad esempio, su e giusto ho bisogno di scegliere quale sia il modo migliore.

  • Samsung Galaxy Tablet non consente di immettere numbers a virgola mobile in input con tipo "number"
  • Qual è la differenza tra DVM e JVM?
  • Android: Unità di verifica delle applicazioni Android con Robolectric e Mockito
  • Adattatore personalizzato per un elenco di elementi che dispongono di elementi figlio multipli?
  • l'image di condivisione non funziona in viber e facebook
  • Includendo le librerie * .so Android Studio tess-two (tesseract)
  • apt dipendenza scope in Android gradle - che cosa è usato per?
  • Differenza tra dimensione android: pt e dp
  • JAVA_HOME non valido quando viene costruito con cordova
  • Evidenziare la row selezionata ListView
  • Come posso get una variabile in un'altra attività?
  • Chip di materiale Android
  • One Solution collect form web for “spostare a sinistra, a destra, su e giù a seconda della velocità o di altre variables”

    Dovresti controllare la velocità e la distanza. Ecco un esempio di rivelatore a scorrimento orizzontale. È ansible aggiungere la rilevazione verticale nello stesso modo.

     public class HSwipeDetector extends SimpleOnGestureListener { private static final int SWIPE_MIN_DISTANCE = 120; private static final int SWIPE_MAX_OFF_PATH = 250; private static final int SWIPE_THRESHOLD_VELOCITY = 200; @Override public boolean onFling(final MotionEvent e1, final MotionEvent e2, final float velocityX, final float velocityY) { if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) { return false; } /* positive value means right to left direction */ final float distance = e1.getX() - e2.getX(); final boolean enoughSpeed = Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY; if(distance > SWIPE_MIN_DISTANCE && enoughSpeed) { // right to left swipe onSwipeLeft(); return true; } else if (distance < -SWIPE_MIN_DISTANCE && enoughSpeed) { // left to right swipe onSwipeRight(); return true; } else { // oooou, it didn't qualify; do nothing return false; } } protected void onSwipeLeft() { // do your stuff here } protected void onSwipeRight() { // do your stuff here } } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.