Подтвердить что ты не робот

Как узнать, является ли MotionEvent относительным или абсолютным?

Я реализую OnTouchListener и получаю объекты MotionEvent. Некоторые события ACTION_MOVE сообщают о абсолютных координатах X/Y, а некоторые относительные координаты отчетов.

Как я могу задать MotionEvent, какие координаты он представляет в настоящее время?

4b9b3361

Ответ 1

Вы можете использовать их для абсолютных координат (абсолютное, относительно экрана устройства):

MotionEvent.getRawX()

MotionEvent.getRawY()

Другие методы getX() и getY() должны возвращать вам координаты относительно отправленного View.

Ответ 2

Это ограничение на платформе Android.

MotionEvent иногда возвращает абсолютные координаты X и Y относительно представления, а иногда и относительные координаты к предыдущему событию движения.

Событие, отправленное как ACTION_DOWN, всегда будет абсолютным, все остальные события будут отличаться. Нет способа задать MotionEvent для текущего типа координат.

Это означает, что на практике getX() и getY() бесполезны для многих случаев использования, и вы должны основывать свою логику приложений на getRawX() и getRawY(), что гарантированно возвращает абсолютные координаты относительно экрана устройства.

Ответ 3

При использовании 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 в главном макете.