Frage

Ich implementiere OnTouchListener und erhalte MotionEvent -Objekte. Etwas ACTION_MOVE Ereignisse berichten von Absolute X/Y -Koordinaten, während einige relative Koordinaten.

Wie kann ich a fragen MotionEvent Welche Art von Koordinaten repräsentiert es derzeit?

War es hilfreich?

Lösung

Möglicherweise möchten Sie diese für absolute Koordinaten verwenden (absolut bezüglich des Bildschirms des Geräts):

MotionEvent.getRawx ()

MotionEvent.getrawy ()

Die anderen Methoden, getX() und getY(), sollten Sie zurückgeben, dass Sie im Verhältnis zur Koordination des Relativs zur View das hat sie geschickt.

Andere Tipps

Dies ist eine Einschränkung der Android -Plattform.

MotionEvent Gibt manchmal Absolute X- und Y -Koordinaten relativ zur Ansicht zurück und manchmal relative Koordinaten zum vorherigen Bewegungsereignis.

Ein Ereignis als als gesendet als als ACTION_DOWN wird immer absolut sein, alle anderen Ereignisse variieren. Es gibt keine Möglichkeit, das zu fragen MotionEvent Für die aktuelle Art der Koordinaten.

Das bedeutet das in der Praxis getX() und getY() sind für viele Anwendungsfälle nutzlos, und Sie sollten Ihre Anwendungslogik stützen getRawX() und getRawY() Dies wird garantiert absolute Koordinaten relativ zum Gerätebildschirm zurückgeben.

Bei der Verwendung der MapView konnte ich die relativen X- und Y -Koordinaten durch Subtrahieren der Ansicht.getleft () und view.gettop () der Inhaltsansicht des Fensters (window.id_android_content) aus der motionEvent.getrawx () und motionEvent abrufen. Getrawy ().

Die Lösung wird hier besprochen:

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

Dies sollte zur Bestimmung der relativen X- und Y -Koordinaten in der Hauptlayoutansicht funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top