Question

J'implémente OnTouchListener et je reçois des objets MotionEvent. Certains événements ACTION_MOVE indiquent les coordonnées X / Y absolues, tandis que certains indiquent les coordonnées relatives.

Comment demander à un MotionEvent quel type de coordonnées il représente actuellement?

Était-ce utile?

La solution

Vous pouvez utiliser ces valeurs pour les coordonnées absolues (absolues, en ce qui concerne l'écran de l'appareil):

MotionEvent.getRawX ()

MotionEvent.getRawY ()

Les autres méthodes, getX () et getY () , devraient vous renvoyer des coordonnées relatives à la Vue qui les a envoyées.

Autres conseils

Il s'agit d'une limitation de la plate-forme Android.

MotionEvent renvoie parfois les coordonnées absolues X et Y relatives à la vue, et parfois les coordonnées relatives à l'événement de mouvement précédent.

Un événement envoyé en tant que ACTION_DOWN sera toujours absolu, tous les autres événements varieront. Il n’existe aucun moyen de demander à MotionEvent le type de coordonnées actuel.

Cela signifie qu'en pratique, getX () et getY () sont inutiles dans de nombreux cas d'utilisation et vous devez baser votre logique d'application sur getRawX (). et getRawY () garantit de renvoyer des coordonnées absolues par rapport à l'écran du périphérique.

Lors de l'utilisation de MapView, j'ai pu obtenir les coordonnées relatives X et Y en soustrayant les View.getLeft () et View.getTop () de la vue du contenu de la fenêtre (Window.ID_ANDROID_CONTENT) de MotionEvent.getRawX (). et MotionEvent.getRawY (), respectivement.

La solution est discutée ici:

http://andmobidev.blogspot.com/2010/01/getting-relative-coordinates-from.html

Cela devrait fonctionner pour déterminer les coordonnées X et Y relatives dans la vue de présentation principale.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top