2012-11-06 17 views
9

Bir düğmenin yanıtında bir ImageView (veya başka bir Görünüm) üzerinde getLocationOnScreen() öğesini çağırmak, doğru değerleri verir.getLocationOnScreen() onCreate() öğesi yalnızca sıfırları döndürür

Ancak getLocationOnScreen() öğesini Activity :: onCreate() yönteminden çağırırken, yalnızca [0, 0] alırım. Bunu nasıl düzeltebilirim?

Tüm hesaplamaların yapılması için onCreate() çok erken mi? Animasyon başlatmak için daha iyi bir yer var mı?

+0

Animasyon için bir başlangıç ​​noktası oluşturmak için hedefiniz nedir? –

+0

Örnek olarak http://stackoverflow.com/a/10542153/129202 kodunu kullanarak. Bir düğmeye basarak görüntüleri ekranın merkezine taşır. Aynı döngü onCreate'da zaten oluşmuşsa, view.getLocationOnScreen() öğesi boş değerler döndürür. – Jonny

cevap

25

onCreate() numaralı telefondan getLocationOnScreen() numaralı telefonu denetlemek için çok erken. Daha iyi bir yer görünüm düzeyinde (özel görünümler kullanıyorsanız), onLayout() adresindedir. Sadece burada, görünümün büyüklüğü ve konumu hesaplanır. Durumda, özel görünümler oluşturmuyorsanız, etkinlik düzeyinde onWindowFocusChanged() adresinde (odağı içeren etkinlikte) elde edebilirsiniz.

+0

Teşekkürler, aynı yanıtı http://stackoverflow.com/a/6560726/129202 adresinden http://developer.android.com/reference/android adresinden söyleyebilirim. /view/View.html#getLocationOnScreen (int []), bir çok insanın sahip olduğu bu yaygın tuzaklar üzerinde biraz susar. – Jonny

İlgili konular