J'essaie d'implémenter un défilement bidirectionnel personnalisé avec le canevas Android et un GuestureDetector.SimpleOnGestureListener
mais j'ai quelques problèmes. Il semble que le premier événement de défilement avec lui donne toujours un énorme saut inexact.Android onScroll événement donnant de mauvaises valeurs
Par exemple, si je clique au milieu de la toile et faites défiler un petit peu, je vais voir les événements de défilement comme celui-ci (arrondi légèrement):
scroll x: -352 scroll y: -373
scroll x: -4 scroll y: 3
scroll x -4 scroll y: 3
La première valeur du défilement est toujours énorme saut que je ne suis pas à distance avec mon doigt je défile avec. Il semble que je traite mon premier mouvement de défilement comme si je déplaçais mon doigt d'un coin de la toile à l'endroit où se trouve le doigt?
Voici mon auditeur réel:
public class BoardScrollListener extends GestureDetector.SimpleOnGestureListener {
private GameService gameService = GameService.getInstance();
private UiService uiService = UiService.getInstance();
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
Log.d("scroll", "scroll x: " + distanceX + " scroll y: " + distanceY);
if (distanceX > -150 && distanceY > -150) {
Game game = gameService.getGame();
game.setxPixelOffset((int) (game.getxPixelOffset() - distanceX));
game.setyPixelOffset((int) (game.getyPixelOffset() - distanceY));
uiService.getGameboardActivity().getGameboard().invalidate();
}
return true;
}
@Override
public boolean onDown(MotionEvent e) {
return true;
}
}
I Tried emballage en ce que si la vérification pour voir ce qui est arrivé, et cela résout effectivement le problème la plupart du temps, mais il est évidemment pas une vraie solution. Quelqu'un peut-il me dire pourquoi l'événement de mouvement est inexact, et un bon moyen de le rendre précis ou d'ignorer le premier mouvement d'un parchemin? J'utilise les fragments d'activité de support v4, donc j'ai aussi essayé de passer à GestureDetectorCompat
, mais cela ne change rien. (Ceci est sur un appareil KitKat.)
double question: http: // stackoverflow.com/questions/12465540/scroll-listener-premier-distancey-toujours-négatif-pour-vers le bas-scroll – Siva