J'essaie d'appliquer une animation à une vue dans mon application Android après la création de mon activité. Pour ce faire, je dois déterminer la taille actuelle de la vue, puis configurer une animation à l'échelle de la taille actuelle à la nouvelle taille. Cette partie doit être effectuée au moment de l'exécution, car la vue est mise à l'échelle à différentes tailles en fonction de l'entrée de l'utilisateur. Ma mise en page est définie en XML.
Cela semble être une tâche facile, et il y a beaucoup de questions SO à ce sujet, mais aucune n'a résolu mon problème, évidemment. Alors peut-être que je manque quelque chose d'évident. Je saisis mon point de vue en:
ImageView myView = (ImageView) getWindow().findViewById(R.id.MyViewID);
Cela fonctionne très bien, mais lors de l' appel getWidth()
, getHeight()
, getMeasuredWidth()
, getLayoutParams().width
, etc., ils ont tous le retour 0. J'ai également essayé d' appeler manuellement measure()
sur la vue suivie d'un appel à getMeasuredWidth()
, mais cela n'a aucun effet.
J'ai essayé d'appeler ces méthodes et d'inspecter l'objet dans le débogueur dans mon activité onCreate()
et dans onPostCreate()
. Comment puis-je déterminer les dimensions exactes de cette vue au moment de l'exécution?
match_parent
). Dans ce cas, une solution plus simple qui peut être appelée en toute sécurité avant même que la vue ne soit dessinée (par exemple, à partir de la méthode onCreate () de votre activité) consiste simplement à utiliser Display.getSize (); voir stackoverflow.com/a/30929599/5025060 pour plus de détails. Je sais que ce n'est pas ce que @NikReiman a demandé, laissant simplement une note à ceux qui pourraient utiliser cette méthode plus simple.