Determining the size of an Android view at runtime -
i trying apply animation view in android app after activity created. this, need determine current size of view, , set animation scale current size new size. part must done @ runtime, since view scales different sizes depending on input user. layout defined in xml.
this seems easy task, , there lots of questions regarding though none solved problem, obviously. perhaps missing obvious. handle view by:
imageview myview = (imageview)getwindow().findviewbyid(r.id.myviewid);
this works fine, when calling getwidth()
, getheight()
, getmeasuredwidth()
, getlayoutparams().width
, etc., return 0. have tried manually calling measure()
on view followed call getmeasuredwidth()
, has no effect.
i have tried calling these methods , inspecting object in debugger in activity's oncreate()
, in onpostcreate()
. how can figure out exact dimensions of view @ runtime?
use viewtreeobserver on view wait first layout. after first layout getwidth()/getheight()/getmeasuredwidth()/getmeasuredheight() work.
viewtreeobserver viewtreeobserver = view.getviewtreeobserver(); if (viewtreeobserver.isalive()) { viewtreeobserver.addongloballayoutlistener(new ongloballayoutlistener() { @override public void ongloballayout() { view.getviewtreeobserver().removeongloballayoutlistener(this); viewwidth = view.getwidth(); viewheight = view.getheight(); } }); }
Comments
Post a Comment