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.

  • Android Studio - exception di mergeDebugResources
  • ListView nell'ordine di ArrayAdapter viene mescolato quando si scorre
  • Android: Cercando di get i dati da youtube api
  • Layout di Android S3 vs layout Galaxy Nexus
  • come utilizzare l'intenzione di eliminare per eseguire alcuna azione sulla notifica chiara?
  • Inserisci i valori e carica l'image nel server php in android
  • Imbottitura barra degli strumenti Android API 21
  • FloatingActionButton hide nella list scroll
  • Android: come posso impostare la width e l'altezza di AlertDialog e il button dello stile AlertDialog?
  • Come creare un AVD per Android 4.0
  • Come ruotare la linea in Android XML?
  • Come rimuovere il marker da google map v2?
  • 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.