Sto provando a realizzare una semplice app solo per capire meglio come utilizzare gli eventi Touch su Android. In questo momento, la mia attività sposta semplicemente un ImageView alle coordinate del tocco sullo schermo (le coordinate di MotionEvent). Riuscivo a farlo applicando un semplice trucco per impostare la nuova posizione dell'immagine ad un valore che è fatto di tocco coordinate relative alla posizione dell'immagine (getX()
e getY()
). I dx e dy variabili sono responsabili per memorizzare questo relativi valori in modo che il tocco mantiene costante all'interno dell'immagine.Perché i getX, getY, setX e setY di ImageView non rappresentano il valore reale nel layout relativo?
Ora voglio inserire 2 ImageViews nell'attività e ho solo due punti fissi per ImageViews e una volta che l'utente trascina un ImageView sull'altro centro di ImageView, le due immagini si posizionano, ma per farlo correttamente mi piacerebbe ottieni le coordinate reali del centro dell'immagine. Ho commentato le parti del codice che lo fanno funzionare correttamente per mostrare il problema. Come si può vedere nella prima immagine quando viene creata la vista, le coordinate immagine sono semplicemente (0, 0)
, non importa dove si è (fino a quando la posizione iniziale è definito come un parametro di layout come CENTER_IN_PARENT
).
Come si può vedere nella seconda fotoe per quanto ho osservato ImageView di getX()
e getY()
ritorno la coordinata come se l'angolo superiore sinistro dell'immagine era in alto a sinistra del display quando l'immagine si trova nell'angolo in alto a sinistra della finestra di ATTIVITÀ.
Mi piacerebbe capire perché succede e se qualcuno sa come ottenere effettivamente le coordinate di ImageView che può essere confrontato direttamente con le coordinate di MotionEvent.
Immagini: