Ответ 1
Вы можете использовать их для абсолютных координат (абсолютное, относительно экрана устройства):
Другие методы getX()
и getY()
должны возвращать вам координаты относительно отправленного View
.
Я реализую OnTouchListener
и получаю объекты MotionEvent. Некоторые события ACTION_MOVE
сообщают о абсолютных координатах X/Y, а некоторые относительные координаты отчетов.
Как я могу задать MotionEvent
, какие координаты он представляет в настоящее время?
Вы можете использовать их для абсолютных координат (абсолютное, относительно экрана устройства):
Другие методы getX()
и getY()
должны возвращать вам координаты относительно отправленного View
.
Это ограничение на платформе Android.
MotionEvent
иногда возвращает абсолютные координаты X и Y относительно представления, а иногда и относительные координаты к предыдущему событию движения.
Событие, отправленное как ACTION_DOWN
, всегда будет абсолютным, все остальные события будут отличаться. Нет способа задать MotionEvent
для текущего типа координат.
Это означает, что на практике getX()
и getY()
бесполезны для многих случаев использования, и вы должны основывать свою логику приложений на getRawX()
и getRawY()
, что гарантированно возвращает абсолютные координаты относительно экрана устройства.
При использовании MapView я смог получить относительные координаты X и Y, вычитая View.getLeft() и View.getTop() в представлении содержимого Window (Window.ID_ANDROID_CONTENT) из файла MotionEvent.getRawX() и MotionEvent.getRawY(), соответственно.
Решение обсуждается здесь:
http://andmobidev.blogspot.com/2010/01/getting-relative-coordinates-from.html
Это должно работать для определения относительных координат X и Y в главном макете.