package Ġcom . t ange m . t ange m _ demo Ċ Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View Tree Observer Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠAnt on ĠZ hil enk ov Ġon Ġ 1 1 / 1 2 / 2 0 2 0 . Ċ Ġ*/ Ċ class ĠGlobal Layout State Handler < T Ġ: ĠView >( ĊĠĠĠ Ġprivate Ġval Ġview : ĠT , ĊĠĠĠ Ġattach Immediate ly : ĠBoolean Ġ= Ġtrue Ċ ) Ġ: ĠView Tree Observer . On Global Layout Listener Ġ{ ĊĊĠĠĠ Ġvar Ġon StateChanged : Ġ(( T ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġis Attached : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( attach Immediate ly ) Ġattach () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġattach () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Attached ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġis Attached Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġview . view Tree Observer . add On Global Layout Listener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdetach () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . view Tree Observer . remove On Global Layout Listener ( this ) ĊĠĠĠĠĠĠĠ Ġis Attached Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Global Layout () Ġ{ ĊĠĠĠĠĠĠĠ Ġon StateChanged ?. invoke ( view ) ĊĠĠĠ Ġ} Ċ }