Por que o getX, getY, setX e setY do ImageView não representam o valor real no Layout relativo?

Estou tentando criar um aplicativo simples apenas para entender melhor como usar os eventos do Touch no Android. Agora, minha atividade apenas move um ImageView para as coordenadas do toque na tela (as coordenadas do MotionEvent). Eu consegui fazer isso aplicando um truque simples para definir a nova posição da imagem para um valor que é feito das coordenadas de toque relativas à posição da imagem (getX() egetY()). odx edy variáveis ​​são responsáveis ​​por armazenar esses valores relativos para que o toque se mantenha constante dentro da imagem.

Agora eu quero colocar 2 ImageViews na atividade e ter apenas dois pontos fixos para ImageViews e uma vez que o usuário arrasta um ImageView sobre o centro do outro ImageView, as duas imagens trocam de lugar, mas para fazer isso corretamente eu gostaria de obter as coordenadas reais do centro da imagem. Eu comentei as partes do código que o fazem funcionar corretamente para mostrar o problema. Como você pode ver noprimeira foto quando a vista é criada, as coordenadas da imagem são simplesmente(0, 0), não importa onde esteja (contanto que a posição inicial seja definida como um parâmetro de layout comoCENTER_IN_PARENT).

Como você pode ver nosegunda foto e tanto quanto eu observei ImageViewgetX() egetY() retorne a coordenada como se o canto superior esquerdo da imagem estivesse no canto superior esquerdo do DISPLAY quando a imagem está localizada no canto superior esquerdo da JANELA DE ATIVIDADE.

Eu gostaria de entender por que isso acontece e se alguém sabe como obter as coordenadas do ImageView que podem ser comparadas diretamente com as coordenadas do MotionEvent.

As fotos:

PRIMEIRA FOTO

SEGUNDA IMAGEM

questionAnswers(1)

yourAnswerToTheQuestion