Sto cercando di applicare un'animazione a una vista nella mia app Android dopo aver creato la mia attività. Per fare ciò, è necessario determinare la dimensione corrente della vista e quindi impostare un'animazione per ridimensionare dalla dimensione corrente alla nuova dimensione. Questa parte deve essere eseguita in fase di runtime, poiché la vista scala a dimensioni diverse a seconda dell'input dell'utente. Il mio layout è definito in XML.
Sembra un compito facile, e ci sono molte domande SO riguardo a questo anche se nessuna ha risolto il mio problema, ovviamente. Quindi forse mi manca qualcosa di ovvio. Ottengo un controllo della mia vista da:
ImageView myView = (ImageView) getWindow().findViewById(R.id.MyViewID);
Questo funziona bene, ma quando si chiama getWidth()
, getHeight()
, getMeasuredWidth()
, getLayoutParams().width
, ecc, tutti di ritorno 0. Ho anche provato manualmente chiamando measure()
sulla vista seguita da una chiamata a getMeasuredWidth()
, ma che non ha alcun effetto.
Ho provato a chiamare questi metodi e ispezionare l'oggetto nel debugger nella mia attività onCreate()
e in onPostCreate()
. Come posso calcolare le dimensioni esatte di questa vista in fase di esecuzione?
match_parent
). In questo caso, una soluzione più semplice che può essere tranquillamente chiamata anche prima che la View sia disegnata (ad esempio, dal metodo onCreate () della tua Activity) è semplicemente quella di usare Display.getSize (); vedi stackoverflow.com/a/30929599/5025060 per i dettagli. So che questo non è ciò che @NikReiman ha chiesto, lasciando solo una nota a coloro che potrebbero essere in grado di utilizzare questo metodo più semplice.