2016-05-04 18 views
4

Ich möchte OnScroll implementieren, wenn Scroll-Ereignis auftritt. Allerdings verstehe ich nicht, wie kann ich den Scroll von unten nach oben mit den Parametern, die ich mit onScroll (MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) erhalten, erkennen.Android - onScroll Gesten Detektor

Ich wäre glücklich, einige Richtlinien zu erhalten, wie man es oder einige Beispiele einführt.

Antwort

3

Sie sollten den Parameter distanceY verwenden können, um festzustellen, ob die Ansicht nach oben oder unten gescrollt wurde. distanceY repräsentiert den Abstand entlang der Y-Achse, der seit dem letzten Aufruf von onScroll() gescrollt wurde. Wenn der Wert distanceY größer als Null ist, wurde die Ansicht von einer unteren Position auf der Y-Achse zu einer höheren Position auf der Y-Achse gescrollt.

@Override 
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { 
    if (distanceY > 0) { 
     // Scrolled upward 
     if (e2.getAction() = MotionEvent.ACTION_UP) { 
      // The pointer has gone up, ending the gesture 
     } 
    } 
    return false; 
} 

Hinweis: habe ich nicht getestet, ob die MotionEvent.ACTION_UP Ihren Bedarf lösen zu überprüfen, wenn Scrollen beendet ist, aber es scheint in der Theorie praktisch. Beachten Sie auch, dass die Geste auch technisch beendet werden kann, wenn die Aktion MotionEvent auf MotionEvent.ACTION_CANCEL gesetzt ist.

+0

Danke für Ihre Antwort. Muss ich die Bewegungsereignisse berücksichtigen? Was tragen sie bei? – Vera

+0

Die 'MotionEvent's enthalten viel feinkörnigere Daten über die ausgeführte Bewegung, wie z. B. den Berührungsstatus. 'e1' ist das erste Down-Motion-Ereignis, das den Bildlauf gestartet hat (dies bleibt normalerweise während des Bildlaufs konstant), während' e2' das Bewegungsereignis ist, das den aktuellen 'onScroll' ausgelöst hat. Sie können 'getY' für beide Bewegungsereignisse aufrufen, um die Änderung von Y zu berechnen, aber' distanceY' sollte in der Lage sein, Ihnen einfach die gleiche Lösung zu bieten. – Ryan

+0

Großartig, ich verstehe. Vielen Dank ! – Vera