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

Popular posts from this blog

php - SPIP: From Tag directly to an article -

jquery - isAjaxRequest always return false -

ruby on rails - In a controller spec, how to find a specific tag in the generated view? -