package Ġcom . k rypt kode . common android . extension Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġandroid . view . H aptic Feedback Constants Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View Tree Observer Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . core . view . View Compat Ċ import Ġandroidx . core . view . Window Insets Compat Ċ Ċ fun ĠView . on Global Layout ( callback : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġview Tree Observer . add On Global Layout Listener ( ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠView Tree Observer . On Global Layout Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Global Layout () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Tree Observer . remove On Global Layout Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ fun ĠView . isVisible () Ġ= Ġvisibility Ġ== ĠView . VISIBLE Ċ Ċ fun ĠView . isIn visible () Ġ= Ġvisibility Ġ== ĠView . IN VISIBLE Ċ Ċ fun ĠView . is G one () Ġ= Ġvisibility Ġ== ĠView . GONE Ċ Ċ fun ĠView . perform H aptic Feedback () Ġ= Ġperform H aptic Feedback ( H aptic Feedback Constants . VIRTUAL _ KEY ) Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . J EL LY _ BE AN _ MR 1 ) Ċ fun ĠView . is R tl () Ġ= Ġlayout Direction Ġ== ĠView . LAYOUT _ DIRECTION _ RTL Ċ Ċ data Ġclass ĠView Padding State ( ĊĠĠĠ Ġval Ġleft : ĠInt , ĊĠĠĠ Ġval Ġtop : ĠInt , ĊĠĠĠ Ġval Ġright : ĠInt , ĊĠĠĠ Ġval Ġbottom : ĠInt , ĊĠĠĠ Ġval Ġstart : ĠInt , ĊĠĠĠ Ġval Ġend : ĠInt Ċ ) Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . KIT K AT _ WATCH ) Ċ fun ĠView . do On Apply Window Insets ( f : Ġ( View , ĠWindow Insets Compat , ĠView Padding State ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġ// ĠCreate Ġa Ġsnapshot Ġof Ġthe Ġview 's Ġpadding Ġstate ĊĠĠĠ Ġval Ġpadding State Ġ= ĠcreateState For View ( this ) ĊĠĠĠ ĠView Compat . setOn Apply Window Insets Listener ( this ) Ġ{ Ġv , Ġin sets Ġ-> ĊĠĠĠĠĠĠĠ Ġf ( v , Ġin sets , Ġpadding State ) ĊĠĠĠĠĠĠĠ Ġin sets ĊĠĠĠ Ġ} ĊĠĠĠ Ġrequest Apply Insets When Attached () Ċ } Ċ Ċ /** Ċ Ġ* ĠCall Ġ[ View . request Apply Insets ] Ġin Ġa Ġsafe Ġaway . ĠIf Ġwe 're Ġattached Ġit Ġcalls Ġit Ġstraight - away . Ċ Ġ* ĠIf Ġnot Ġit Ġsets Ġan Ġ[ View . On Attach State ChangeListener ] Ġand Ġwaits Ġto Ġbe Ġattached Ġbefore Ġcalling Ċ Ġ* Ġ[ View . request Apply Insets ]. Ċ Ġ*/ Ċ @ Requires Api ( Build . VERSION _ CODES . KIT K AT _ WATCH ) Ċ fun ĠView . request Apply Insets When Attached () Ġ{ ĊĠĠĠ Ġif Ġ( is Attached To Window ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Apply Insets () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġadd On Attach State ChangeListener ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠView . On Attach State ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Attached To Window ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . request Apply Insets () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Detached From Window ( v : ĠView ) Ġ= ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . J EL LY _ BE AN _ MR 1 ) Ċ private Ġfun ĠcreateState For View ( view : ĠView ) Ġ= ĠView Padding State ( ĊĠĠĠ Ġview . padding Left , ĊĠĠĠ Ġview . padding Top , ĊĠĠĠ Ġview . padding Right , ĊĠĠĠ Ġview . padding Bottom , ĊĠĠĠ Ġview . padding Start , ĊĠĠĠ Ġview . padding End Ċ ) Ċ Ċ fun ĠView . hide Keyboard () Ġ{ ĊĠĠĠ Ġval Ġimm Ġ= Ġcontext . getSystem Service ( Context . INPUT _ METHOD _ SERVICE ) ĊĠĠĠĠĠĠĠ Ġas ĠInput Method Manager ĊĠĠĠ Ġimm . hide Soft Input From Window ( window Token , Ġ 0 ) Ċ } Ċ