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.
Danke für Ihre Antwort. Muss ich die Bewegungsereignisse berücksichtigen? Was tragen sie bei? – Vera
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
Großartig, ich verstehe. Vielen Dank ! – Vera