Saya mencoba menerapkan animasi ke tampilan di aplikasi Android saya setelah aktivitas saya dibuat. Untuk melakukan ini, saya perlu menentukan ukuran tampilan saat ini, dan kemudian menyiapkan animasi untuk diskalakan dari ukuran saat ini ke ukuran baru. Bagian ini harus diselesaikan saat runtime, karena tampilan berskala ke ukuran yang berbeda bergantung pada masukan dari pengguna. Tata letak saya ditentukan dalam XML.
Ini sepertinya tugas yang mudah, dan ada banyak pertanyaan SO mengenai hal ini meskipun tidak ada yang menyelesaikan masalah saya, jelas. Jadi mungkin saya melewatkan sesuatu yang jelas. Saya memahami pandangan saya dengan:
ImageView myView = (ImageView) getWindow().findViewById(R.id.MyViewID);
Ini bekerja baik, tapi saat memanggil getWidth()
, getHeight()
, getMeasuredWidth()
, getLayoutParams().width
, dll, mereka semua kembali 0. Saya juga mencoba secara manual menelepon measure()
pada tampilan diikuti dengan panggilan untuk getMeasuredWidth()
, tapi itu tidak berpengaruh.
Saya telah mencoba memanggil metode ini dan memeriksa objek di debugger di aktivitas saya onCreate()
dan di onPostCreate()
. Bagaimana cara mengetahui dimensi yang tepat dari tampilan ini saat runtime?
match_parent
). Dalam kasus ini, solusi sederhana yang bisa dipanggil dengan aman bahkan sebelum View digambar (misalnya, dari metode onCreate () Aktivitas Anda) adalah hanya dengan menggunakan Display.getSize (); lihat stackoverflow.com/a/30929599/5025060 untuk detailnya. Saya tahu ini bukan yang diminta @NikReiman, hanya meninggalkan catatan untuk mereka yang mungkin dapat menggunakan metode yang lebih sederhana ini.