Vous devriez pouvoir utiliser le paramètre distanceY
pour déterminer si la vue a été déplacée vers le haut ou vers le bas. distanceY
représente la distance le long de l'axe Y défilée depuis le dernier appel à onScroll()
. Si la valeur distanceY
est supérieure à zéro, la vue a été déplacée d'une position inférieure sur l'axe Y vers une position supérieure sur l'axe Y.
@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;
}
Note: Je ne l'ai pas testé si le MotionEvent.ACTION_UP
va résoudre votre besoin de vérifier lors du défilement est terminée, mais il semble en théorie pratique. Notez également que techniquement le geste pourrait également se terminer si l'action MotionEvent
est définie sur MotionEvent.ACTION_CANCEL
.
Merci pour votre réponse. Dois-je considérer les événements de mouvement? Que contribuent-ils? – Vera
Les 'MotionEvent' contiennent beaucoup plus de données de grain fin sur le mouvement en cours d'exécution tel que l'état tactile. 'e1' est le premier événement descendant qui a commencé le défilement (il reste généralement constant pendant le défilement) tandis que' e2' est l'événement de mouvement qui a déclenché le 'onScroll' actuel. Vous pouvez appeler 'getY' sur les deux événements de mouvement pour calculer le changement de Y, mais' distanceY' devrait pouvoir vous fournir plus simplement la même solution. – Ryan
Super, je comprends. Je vous remercie ! – Vera