Dlaczego getX, getY, setX i setY ImageView nie reprezentują rzeczywistej wartości w układzie względnym?

Próbuję stworzyć prostą aplikację, aby lepiej zrozumieć, jak korzystać z wydarzeń Touch na Androida. W tej chwili moje działanie przenosi ImageView do współrzędnych dotyku na ekranie (współrzędne MotionEvent). Mogłabym to zrobić, stosując prostą sztuczkę, aby ustawić nową pozycję obrazu na wartość współrzędnych dotykowych względem położenia obrazu (getX() igetY()). Thedx idy zmienne są odpowiedzialne za przechowywanie tych względnych wartości, więc dotyk utrzymuje stałą wartość w obrazie.

Teraz chcę umieścić 2 ImageViews w działaniu i mieć tylko dwa stałe punkty dla ImageView, a gdy użytkownik przeciągnie jeden ImageView nad inne centrum ImageView, dwa obrazy przełączają się, ale aby to zrobić poprawnie, chciałbym uzyskać prawdziwe współrzędne centrum obrazu. Skomentowałem części kodu, które sprawiają, że działa poprawnie, aby pokazać problem. Jak widać wPierwsze zdjęcie kiedy widok jest tworzony, współrzędne obrazu są po prostu(0, 0), bez względu na to, gdzie jest (o ile początkowa pozycja jest zdefiniowana jako parametr układu, jakCENTER_IN_PARENT).

Jak widać wdrugie zdjęcie i o ile obserwowałem ImageViewgetX() igetY() zwróć współrzędną tak, jakby lewy górny róg obrazu znajdował się w lewym górnym rogu WYŚWIETLACZA, gdy obraz znajduje się w lewym górnym rogu OKNA AKTYWNOŚCI.

Chciałbym zrozumieć, dlaczego tak się dzieje i czy ktoś wie, jak uzyskać współrzędne ImageView, które można bezpośrednio porównać ze współrzędnymi MotionEvent.

Kino:

PIERWSZE ZDJĘCIE

DRUGIE ZDJĘCIE

questionAnswers(1)

yourAnswerToTheQuestion