Android: пиксели x и y MotionEvent не преобразуются в координаты изображения

Я использую функции getX() и getY() в MotionEvent, чтобы получить координаты x и y, где пользователь коснулся экрана. Я также делаю снимки с помощью камеры Android. Эти изображения 480x640. Мое намерение состоит в том, чтобы пользователь нарисовал поле и получил начальную и конечную позиции x, y и использовал их для создания поля и обрезки изображения. К сожалению, даже если пользователь выделяет правильную область с помощью экрана Android (который показывает видео с камеры), координаты из MotionEvent вообще не относятся к правильному местоположению на изображении. Иногда координаты x, y, которые я получаю от MotionEvent, на самом деле больше 480 или 640. Отличаются ли размеры экрана Android от изображения? Или позиции x, y из MotionEvent соответствуют чему-то еще


person Nageen    schedule 04.04.2013    source источник
comment
stackoverflow.com/a/3152172/755804   -  person 18446744073709551615    schedule 06.02.2016


Ответы (1)


Возвращаемые координаты зависят от используемого указателя, но, как правило, находятся в координатах экрана, поэтому, чтобы получить относительные координаты из представления, вам необходимо сместить положение представления.

Видеть:

http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_X

Для смещения представления используйте:

https://developer.android.com/reference/android/view/View.html#getLeft() https://developer.android.com/reference/android/view/View.html#getTop()

person Nick Palmer    schedule 04.04.2013
comment
Не работает. Это фактически приводит к сбою приложения. Я понял, что моя проблема была просто в разнице в разрешении между сделанным изображением и экраном приложения. В любом случае, спасибо! - person Nageen; 09.04.2013