¿Por qué getView, getY, setX y setY de ImageView no representan el valor real en el diseño relativo?

Estoy tratando de hacer una aplicación simple para entender mejor cómo usar los eventos Touch en Android. En este momento, mi Actividad simplemente mueve un ImageView a las coordenadas del toque en la pantalla (las coordenadas del MotionEvent). Podría lograr hacer esto aplicando un simple truco para establecer la nueva posición de la imagen en un valor que esté formado por las coordenadas táctiles relativas a la posición de la imagen (getX() ygetY()). losdx ydy Las variables son responsables de almacenar estos valores relativos para que el toque se mantenga constante dentro de la imagen.

Ahora quiero poner 2 ImageViews en la actividad y tener solo dos lugares fijos para ImageViews y una vez que el usuario arrastre un ImageView sobre el otro centro de ImageView, las dos imágenes cambian de lugar, pero para hacerlo correctamente, me gustaría obtener las coordenadas reales del centro de la imagen. Comenté las partes del código que lo hacen funcionar correctamente para mostrar el problema. Como se puede ver en elprimera foto Cuando se crea la vista, las coordenadas de la imagen son simplemente(0, 0), no importa dónde se encuentre (siempre que la posición inicial se defina como un parámetro de diseño comoCENTER_IN_PARENT).

Como se puede ver en elsegunda foto y en la medida en que observé ImageViewgetX() ygetY() devuelva la coordenada como si la esquina superior izquierda de la imagen estuviera en la esquina superior izquierda de la PANTALLA cuando la imagen se encuentra en la esquina superior izquierda de la VENTANA DE ACTIVIDAD.

Me gustaría entender por qué sucede eso y si alguien sabe cómo obtener realmente las coordenadas de ImageView que se pueden comparar directamente con las coordenadas de MotionEvent.

Imágenes:

Primera imagen

Segunda imagen

Respuestas a la pregunta(1)

Su respuesta a la pregunta