Próbuję wykonać prostą aplikację, aby lepiej zrozumieć, jak korzystać z wydarzeń Touch na Androidzie. Teraz moja aktywność powoduje przesunięcie widoku obrazu do współrzędnych dotyku na ekranie (współrzędne MotionEvent). Mogłem to zrobić, stosując prostą sztuczkę, aby ustawić nową pozycję obrazu na wartość, która jest utworzona ze współrzędnych dotyku w odniesieniu do pozycji obrazu (getX()
i getY()
). Zmienne te są odpowiedzialne za przechowywanie tych względnych wartości, więc dotyk pozostaje stały w obrazie.Dlaczego getX obrazu ImageView, getY, setX i setY nie reprezentują rzeczywistej wartości w układzie względnym?
Teraz chcę umieścić 2 Widoki Obrazu w Aktywności i mieć tylko dwa ustalone miejsca dla ImageViews i gdy użytkownik przeciągnie jeden ImageView nad drugim centrum ImageView, dwa obrazy zmieniają miejsca, ale żeby zrobić to poprawnie Chciałbym uzyskać rzeczywiste współrzędne centrum obrazu. Skomentowałem części kodu, które sprawiają, że działa poprawnie, aby pokazać problem. Jak widać na pierwszym zdjęciu pierwsze zdjęcie podczas tworzenia widoku, Współrzędne obrazu są po prostu (0, 0)
, bez względu na to, gdzie jest (o ile pozycja początkowa jest zdefiniowana jako parametr układu, taki jak CENTER_IN_PARENT
).
Jak widać w drugim zdjęciu io ile zauważyłem ImageView na getX()
i getY()
powrócić współrzędnych jakby lewy górny róg obrazu był w lewym górnym rogu ekranu, gdy obraz znajduje się w lewym górnym rogu OKNA AKTYWNEGO.
Chciałbym zrozumieć, dlaczego tak się dzieje i czy ktoś wie, jak właściwie uzyskać współrzędne ImageView, które można bezpośrednio porównać ze współrzędnymi MotionEvent.
Zdjęcia: