Android - How to tell when a specific view has been rendered? -
i have regular button want display timer on. imagine text of button changes every second countdown timer. however, need timer start when button rendered , ready go on screen.
right i'm starting timer (which asynctask) in oncreateview() of fragment. isn't accurate, because other loading stuff have have. potentially move timer start @ bottom of oncreateview() isn't accurate either.
i saw there's ongloballayoutlistener tree observer. imagine when entire view tree "about be" drawn? how know when particular button rendered , visible user?
ongloballayoutlistener() right place go. using it's guaranteed called when button has been layed out ("fully rendered , ready go on screen"). example, in oncreate() do:
btn = (button) findviewbyid(r.id.bn); btn.getviewtreeobserver().addongloballayoutlistener(new ongloballayoutlistener() { @override public void ongloballayout() { new asynctasktimer.execute(); } }); if don't want listener called more once add following line ongloballayout() method:
btn.getviewtreeobserver().removeongloballayoutlistener(this);
Comments
Post a Comment