Ich versuche, eine Animation auf eine Ansicht in meiner Android-App anzuwenden, nachdem meine Aktivität erstellt wurde. Dazu muss ich die aktuelle Größe der Ansicht bestimmen und dann eine Animation einrichten, die von der aktuellen Größe auf die neue Größe skaliert. Dieser Teil muss zur Laufzeit ausgeführt werden, da die Ansicht je nach Benutzereingabe auf unterschiedliche Größen skaliert werden kann. Mein Layout ist in XML definiert.
Dies scheint eine leichte Aufgabe zu sein, und es gibt viele SO-Fragen dazu, obwohl keine offensichtlich mein Problem gelöst hat. Vielleicht fehlt mir etwas Offensichtliches. Ich bekomme einen Überblick über meine Ansicht durch:
ImageView myView = (ImageView) getWindow().findViewById(R.id.MyViewID);
Dies funktioniert gut, aber wenn Sie anrufen getWidth()
, getHeight()
, getMeasuredWidth()
, getLayoutParams().width
usw., sie alle zurück 0. Ich habe auch manuell aufrufen versucht , measure()
auf der Ansicht , gefolgt von einem Aufruf getMeasuredWidth()
, aber das hat keine Wirkung.
Ich habe versucht, diese Methoden aufzurufen und das Objekt im Debugger in meiner Aktivität onCreate()
und in zu untersuchen onPostCreate()
. Wie kann ich zur Laufzeit die genauen Abmessungen dieser Ansicht ermitteln?
match_parent
). In diesem Fall besteht eine einfachere Lösung, die sicher aufgerufen werden kann, noch bevor die Ansicht gezeichnet wird (z. B. aus der onCreate () -Methode Ihrer Aktivität), darin, nur Display.getSize () zu verwenden. Weitere Informationen finden Sie unter stackoverflow.com/a/30929599/5025060 . Ich weiß, dass @NikReiman nicht darum gebeten hat, sondern nur eine Notiz für diejenigen hinterlassen hat, die diese einfachere Methode möglicherweise anwenden können.