2017-06-12 1 views
0

Ich arbeite an einem Projekt und es besteht die Notwendigkeit, Hinzufügen von einigen Objekten hinzufügen. Aber das Problem ist, die Flicking-Bewegung zu unterscheiden, dass entweder der Flick schnell oder langsam ist. Kann ich in Android die Geschwindigkeit Flicken erkennen?Detektieren langsam und schnell-Flick in Android

Code so weit ist;

public class MainActivity extends Activity implements 
     GestureDetector.OnGestureListener, 
     GestureDetector.OnDoubleTapListener{ 

    private static final String DEBUG_TAG = "Gestures"; 
    private GestureDetectorCompat mDetector; 

    // Called when the activity is first created. 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mDetector = new GestureDetectorCompat(this,this); 
     mDetector.setOnDoubleTapListener(this); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event){ 
     this.mDetector.onTouchEvent(event); 
     // Be sure to call the superclass implementation 
     return super.onTouchEvent(event); 
    } 

    @Override 
    public boolean onFling(MotionEvent event1, MotionEvent event2, 
      float velocityX, float velocityY) { 
     Log.d(DEBUG_TAG, "onFling: " + event1.toString()+event2.toString()); 
     return true; 
    } 
} 
+1

Ist 'float velocityX, float velocityY' des 'onFling'-Ereignisses nicht genau das, was Sie wollen? – Henry

Antwort

1

Android's Documentation for OnFling sollten Sie die Antwort:

velocityX float: Die Geschwindigkeit dieses fling gemessen in Pixel pro Sekunde entlang der x-Achse. velocityY float: Die Geschwindigkeit dieses Flings wird in Pixel pro Sekunde entlang der y-Achse gemessen.

overrode Sie

@Override 
public boolean onFling(MotionEvent event1, MotionEvent event2, 
     float velocityX, float velocityY) { 
    Log.d(DEBUG_TAG, "onFling: " + event1.toString()+event2.toString()); 
    return true; 
} 

, die jedes Mal, wenn ein Seitensprung eine Bewegung erkannt wird aufgerufen werden soll. Messen Sie daher velocityX und velocityY, je nachdem, welche Achse Sie für die Bewegung verfolgen.