Próbuję zastosować animację do widoku w mojej aplikacji na Androida po utworzeniu mojej aktywności. Aby to zrobić, muszę określić bieżący rozmiar widoku, a następnie skonfigurować animację, aby skalować od bieżącego rozmiaru do nowego rozmiaru. Ta część musi być wykonana w czasie wykonywania, ponieważ widok skaluje się do różnych rozmiarów w zależności od danych wprowadzonych przez użytkownika. Mój układ jest zdefiniowany w XML.
Wydaje się, że jest to łatwe zadanie i jest wiele pytań SO dotyczących tego, ale żadne z nich oczywiście nie rozwiązało mojego problemu. Więc może brakuje mi czegoś oczywistego. Uzyskuję uchwyt do mojego widoku poprzez:
ImageView myView = (ImageView) getWindow().findViewById(R.id.MyViewID);
Działa to dobrze, ale podczas rozmowy getWidth()
, getHeight()
, getMeasuredWidth()
, getLayoutParams().width
, itd., Wszystkie one powrót 0. Próbowałem również ręcznie dzwoniąc measure()
na widoku, a następnie wywołaniu getMeasuredWidth()
, ale to nie ma znaczenia.
Próbowałem wywołać te metody i sprawdzić obiekt w debugerze w mojej aktywności onCreate()
i w onPostCreate()
. Jak mogę określić dokładne wymiary tego widoku w czasie wykonywania?
match_parent
). W tym przypadku prostszym rozwiązaniem, które można bezpiecznie wywołać nawet przed narysowaniem widoku (np. Z metody onCreate () Twojego działania) jest po prostu użycie Display.getSize (); Szczegółowe informacje można znaleźć na stackoverflow.com/a/30929599/5025060 . Wiem, że nie o to prosił @NikReiman, po prostu zostawiając notatkę tym, którzy mogą być w stanie użyć tej prostszej metody.