Почему в ImageView getX, getY, setX и setY не представляют фактическое значение в относительном макете?

Я пытаюсь сделать простое приложение, чтобы лучше понять, как использовать сенсорные события на Android. Прямо сейчас моя активность просто перемещает ImageView к координатам касания на экране (координаты MotionEvent). Я мог бы сделать это, применив простой трюк, чтобы установить новую позицию изображения в значение, которое состоит из координат касания относительно позиции изображения (getX() а такжеgetY()).дх а такжеду переменные ответственны за сохранение этих относительных значений, поэтому касание остается постоянным внутри изображения.

Теперь я хочу поместить 2 ImageViews в Activity и иметь только два фиксированных места для ImageViews, и как только пользователь перетаскивает один ImageView поверх центра другого ImageView, два изображения меняются местами, но для правильного выполнения я хотел бы получить реальные координаты центра изображения. Я прокомментировал части кода, которые заставляют его работать правильно, чтобы показать проблему. Как вы можете видеть впервая картинка когда представление создается, координаты изображения просто(0, 0)независимо от того, где он находится (до тех пор, пока начальная позиция определяется как параметр макета, например,CENTER_IN_PARENT).

Как вы можете видеть ввторая картина и насколько я наблюдал ImageViewgetX() а такжеgetY() вернуть координату, как если бы верхний левый угол изображения находился в верхнем левом углу экрана, когда изображение расположено в верхнем левом углу окна ACTIVITY.

Я хотел бы понять, почему это происходит, и если кто-нибудь знает, как на самом деле получить координаты ImageView, которые можно напрямую сравнить с координатами MotionEvent.

Фотографий:

ПЕРВАЯ КАРТИНА

ВТОРАЯ КАРТИНА

Ответы на вопрос(1)

Ваш ответ на вопрос