package Ġcom . k root l . be et lens . ui . common Ċ Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Point Ċ import Ġandroid . graphics . PointF Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . Window Insets Ċ import Ġandroid . widget .* Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . constraint layout . widget . Group Ċ import Ġandroidx . core . view . get Ċ import Ġandroidx . core . view . isIn visible Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . view pager 2 . widget . ViewPager 2 Ċ import Ġkotlin . math . round ToInt ĊĊ Ċ private Ġfun ĠView Pager 2 . getPage At Position ( position : ĠInt ): ĠView ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( position Ġin Ġ 0 Ġuntil Ġ( adapter ?. item Count Ġ?: Ġ 0 )) ĊĠĠĠĠĠĠĠ Ġ(( this [ 0 ] Ġas ĠRecyclerView ). layout Manager Ġas ĠLinearLayoutManager ). find View By Position ( position ) ĊĠĠĠ Ġelse Ġnull Ċ } Ċ Ċ fun ĠEditText . onChange ( callback : Ġ( String ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġthis . add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( s . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ fun ĠTextView . strike Through ( show : ĠBoolean ) Ġ{ ĊĠĠĠ Ġpaint Flags Ġ= Ġif Ġ( show ) Ġ( paint Flags Ġor ĠPaint . STRI KE _ TH RU _ TEXT _ FLAG ) ĊĠĠĠ Ġelse Ġ( paint Flags Ġand ĠPaint . STRI KE _ TH RU _ TEXT _ FLAG . inv ()) Ċ } Ċ Ċ fun ĠSeek Bar . onChange ( callback : Ġ( Float ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġthis . setOn Seek Bar ChangeListener ( object Ġ: ĠSeek Bar . On Seek Bar ChangeListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( seek Bar : ĠSeek Bar , Ġprogress : ĠInt , Ġfrom User : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( progress Ġ/ Ġ 1 0 0 f ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( seek Bar : ĠSeek Bar ) Ġ{} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( seek Bar : ĠSeek Bar ) Ġ{} ĊĊĠĠĠ Ġ}) Ċ } Ċ Ċ fun ĠSp inner . on ItemSelected ( callback : Ġ( Int ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġthis . on ItemSelected Listener Ġ= Ġobject Ġ: ĠAdapter View . On ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( parent : ĠAdapter View <* >) Ġ{} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( parent : ĠAdapter View <* >, Ġview : ĠView , Ġpos : ĠInt , Ġid : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( pos ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠView . setVisible ( visible : ĠBoolean ) Ġ{ ĊĠĠĠ Ġthis . visibility Ġ= Ġif Ġ( visible ) ĠView . VISIBLE Ġelse ĠView . GONE Ċ } Ċ Ċ fun ĠGroup . make Visible ( visible : ĠBoolean ) Ġ{ ĊĠĠĠ ĠisIn visible Ġ= Ġ! visible ĊĠĠĠ Ġupdate Pre Layout ( parent Ġas ĠConstraint Layout ) Ċ } Ċ Ċ fun ĠInt . px To Dp (): ĠInt Ġ{ ĊĠĠĠ Ġval Ġmetrics Ġ= ĠResources . getSystem (). display Metrics ĊĠĠĠ Ġval Ġdp Ġ= Ġthis Ġ/ Ġ( metrics . density D pi Ġ/ Ġ 1 6 0 f ) ĊĠĠĠ Ġreturn Ġdp . round ToInt () Ċ } Ċ Ċ fun ĠInt . dp To Px (): ĠInt Ġ{ ĊĠĠĠ Ġval Ġmetrics Ġ= ĠResources . getSystem (). display Metrics ĊĠĠĠ Ġval Ġpx Ġ= Ġthis Ġ* Ġ( metrics . density D pi Ġ/ Ġ 1 6 0 f ) ĊĠĠĠ Ġreturn Ġpx . round ToInt () Ċ } Ċ Ċ fun ĠFloat . dp To Px (): ĠFloat Ġ{ ĊĠĠĠ Ġval Ġmetrics Ġ= ĠResources . getSystem (). display Metrics ĊĠĠĠ Ġreturn Ġthis Ġ* Ġ( metrics . density D pi Ġ/ Ġ 1 6 0 f ) Ċ } Ċ Ċ fun ĠView . do On Apply Window Insets ( f : Ġ( View , ĠWindow Insets , ĠInitial Padding , ĠInitial Margin ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġ// ĠCreate Ġa Ġsnapshot Ġof Ġthe Ġview 's Ġpadding ĠSTATE ĊĠĠĠ Ġval Ġinitial Padding Ġ= Ġrecord Initial Padding For View ( this ) ĊĠĠĠ Ġ// ĠCreate Ġa Ġsnapshot Ġof Ġthe Ġview 's Ġmargin ĠSTATE ĊĠĠĠ Ġval Ġinitial Margin Ġ= Ġrecord Initial Margin For View ( this ) ĊĠĠĠ Ġ// ĠSet Ġan Ġactual ĠOn Apply Window Insets Listener Ġwhich Ġproxies Ġto Ġthe Ġgiven ĊĠĠĠ Ġ// Ġlambda , Ġalso Ġpassing Ġin Ġthe Ġoriginal Ġpadding ĠSTATE ĊĠĠĠ Ġset On Apply Window Insets Listener Ġ{ Ġv , Ġin sets Ġ-> ĊĠĠĠĠĠĠĠ Ġf ( v , Ġin sets , Ġinitial Padding , Ġinitial Margin ) ĊĠĠĠĠĠĠĠ Ġ// ĠAlways Ġreturn Ġthe Ġin sets , Ġso Ġthat Ġchildren Ġcan Ġalso Ġuse Ġthem ĊĠĠĠĠĠĠĠ Ġin sets ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġrequest Ġsome Ġin sets ĊĠĠĠ Ġrequest Apply Insets When Attached () Ċ } Ċ Ċ data Ġclass ĠInitial Padding ( ĊĠĠĠ Ġval Ġleft : ĠInt , Ġval Ġtop : ĠInt , ĊĠĠĠ Ġval Ġright : ĠInt , Ġval Ġbottom : ĠInt Ċ ) Ċ Ċ data Ġclass ĠInitial Margin ( ĊĠĠĠ Ġval Ġleft : ĠInt , Ġval Ġtop : ĠInt , ĊĠĠĠ Ġval Ġright : ĠInt , Ġval Ġbottom : ĠInt Ċ ) Ċ Ċ private Ġfun Ġrecord Initial Padding For View ( view : ĠView ) Ġ= ĠInitial Padding ( ĊĠĠĠ Ġview . padding Left , Ġview . padding Top , Ġview . padding Right , Ġview . padding Bottom Ċ ) Ċ Ċ private Ġfun Ġrecord Initial Margin For View ( view : ĠView ): ĠInitial Margin Ġ{ ĊĠĠĠ Ġval Ġlp Ġ= Ġview . layout Params ĊĠĠĠ Ġwith ( lp Ġas ĠViewGroup . Margin LayoutParams ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠInitial Margin ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Margin , Ġtop Margin , Ġright Margin , Ġbottom Margin ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠView . request Apply Insets When Attached () Ġ{ ĊĠĠĠ Ġif Ġ( is Attached To Window ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWe 're Ġalready Ġattached , Ġjust Ġrequest Ġas Ġnormal ĊĠĠĠĠĠĠĠ Ġrequest Apply Insets () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWe 're Ġnot Ġattached Ġto Ġthe Ġhierarchy , Ġadd Ġa Ġlistener Ġto ĊĠĠĠĠĠĠĠ Ġ// Ġrequest Ġwhen Ġwe Ġare ĊĠĠĠĠĠĠĠ Ġadd On Attach State ChangeListener ( object Ġ: ĠView . On Attach State ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Attached To Window ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . remove On Attach State ChangeListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . request Apply Insets () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Detached From Window ( v : ĠView ) Ġ= ĠUnit ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠViewGroup . please GetChild ( at : ĠInt ): ĠView ? Ġ= Ġif Ġ( at Ġin Ġ 0 Ġuntil Ġchild Count ) Ġthis [ at ] Ġelse Ġnull Ċ Ċ fun ĠView . center ( origin : ĠViewGroup ? Ġ= Ġnull ): ĠPoint Ġ{ ĊĊĠĠĠ Ġif Ġ( origin Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoffset View Bounds Ġ= ĠRect () ĊĠĠĠĠĠĠĠ Ġget Drawing Rect ( offset View Bounds ) ĊĠĠĠĠĠĠĠ Ġorigin . offset Desc endant Rect To My Coords ( this , Ġoffset View Bounds ) ĊĠĠĠĠĠĠĠ Ġreturn ĠPoint ( offset View Bounds . center X (), Ġoffset View Bounds . center Y ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn ĠPoint ( x . toInt () Ġ+ Ġwidth Ġ/ Ġ 2 , Ġy . toInt () Ġ+ Ġheight Ġ/ Ġ 2 ) Ċ } Ċ Ċ fun ĠView . center F ( origin : ĠViewGroup ? Ġ= Ġnull ): ĠPoint F Ġ{ ĊĠĠĠ Ġreturn ĠPoint F ( center ( origin Ġ= Ġorigin )) Ċ }