2011-10-27 4 views
1

Juste une petite question pour confirmer la documentation:Android MotionEvent getY (int): Quel appel est correct?

Le getY(int) function from MotionEvent dans l'Android me confond avec sa documentation:

Renvoie la coordonnée Y de cet événement pour l'indice de pointeur donné (utiliser getPointerId (int) pour trouver l'identifiant du pointeur pour cet index). Les nombres entiers sont des pixels. la valeur peut avoir une fraction pour les périphériques d'entrée qui sont sous-pixel précis.

Avec que je pensais que le code devrait être écrit comme ceci:

for(int i = 0; i < event.getPointerCount(); ++i) { 
    // Some code... 
    int currentPointer = event.getPointerId(i); 
    float currentY = event.getY(currentPointer); 
    Log.i("test", "Pointer " + currentPointer + " has Y-coord of " + currentY); 
    // Some more code ... 
} 

Cependant, dans les tests sur mon Samsung Galaxy Tab, il semble que je ne devrais pas passer currentPointer dans getY mais juste le ' j'aime bien:

for(int i = 0; i < event.getPointerCount(); ++i) { 
    // Some code... 
    int currentPointer = event.getPointerId(i); 
    float currentY = event.getY(i); 
    Log.i("test", "Pointer " + currentPointer + " has Y-coord of " + currentY); 
    // Some more code ... 
} 

Est-ce la bonne façon d'utiliser les fonctions getPointerId et getY? Vous leur donnez à la fois la même variable 'i' et jamais leur identifiant de pointeur?

Je demande parce que je veux m'assurer que ce n'est pas différent seulement sur mon appareil et c'est en fait la façon dont il est prévu pour fonctionner. Merci.

+0

Je me suis battu avec celui-là aussi. Peut-être que ma réponse sur [Problèmes MotionEvent] (http://stackoverflow.com/questions/7545591/motionevent-issues/7577139#7577139) vous aidera à mieux le comprendre ... – Knickedi

+0

@Knickedi Merci qui confirme ce que je viens de découvrir pour moi-même. C'est exactement la façon dont tout semble fonctionner, mais une partie de cela est évidente quand vous commencez à essayer le multitouch. –

+0

Heureux que cette réponse n'était pas pour rien et vous a aidé. Il y a des choses vraiment déroutantes à propos du multitouch et comme vous l'avez dit, la documentation n'est pas utile non plus et vous confond plus que de vous aider à comprendre ... – Knickedi

Répondre

1

Oui, c'est correct, vous devez spécifier uniquement "i".

Toutes les méthodes getPointer * (int) prennent le même index en tant que paramètre.

Questions connexes