package Ġcom . iven . vector ify Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View Tree Observer Ċ import Ġandroid . widget . Image Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . content . res . AppCompat Resources Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . graphics . Color Utils Ċ import Ġcom . google . android . material . card . Material Card View Ċ import Ġcom . iven . vector ify . utils . Utils ĊĊ Ċ // view Tree Observer Ġextension Ġto Ġmeasure Ġlayout Ġparams Ċ // https :// ant onio le iva . com / kotlin - ong lob all ayout listener / Ċ inline Ġfun Ġ< T Ġ: ĠView > ĠT . after Measured ( cross inline Ġf : ĠT . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġview Tree Observer . add On Global Layout Listener ( object Ġ: ĊĠĠĠĠĠĠĠ ĠView Tree Observer . On Global Layout Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Global Layout () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( meas ured Width Ġ> Ġ 0 Ġ&& Ġmeasured Height Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Tree Observer . remove On Global Layout Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ fun ĠVector ify Wall paper . addTo Recent Setup s () Ġ{ ĊĠĠĠ Ġ// update Ġrecent Ġsetup s ĊĠĠĠ Ġval Ġrecent Setup s Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( vector ify Preferences . vector ify Wall paper Setup s Ġ!= Ġnull ) Ġvector ify Preferences . vector ify Wall paper Setup s Ġelse Ġmutable ListOf () ĊĊĠĠĠ Ġif Ġ(! recent Setup s ?. contains ( this ) !! ) Ġrecent Setup s . add ( this ) ĊĠĠĠ Ġvector ify Preferences . vector ify Wall paper Setup s Ġ= Ġrecent Setup s Ċ } Ċ Ċ @ Suppress Lint (" Default Locale ") Ċ fun ĠInt . to Hex ( context : ĠContext ) Ġ= ĊĠĠĠ Ġcontext . getString ( R . string . hex , ĠInteger . to HexString ( this )). toUpperCase () Ċ Ċ // method Ġto Ġdetermine Ġcolors Ġl uminance Ċ fun ĠInt . is Dark () Ġ= ĠColor Utils . calculate L uminance ( this ) Ġ< Ġ 0 . 3 5 Ċ Ċ // method Ġto Ġcalculate Ġcolors Ġfor Ġcards Ġtitles Ċ fun ĠInt . to Surface Color () Ġ= Ġif Ġ( is Dark ()) ĠColor . WHITE Ġelse ĠColor . BLACK Ċ Ċ fun ĠInt . dar ken Or Light en () Ġ= ĊĠĠĠ ĠColor Utils . blend ARGB ( this , Ġif Ġ( is Dark ()) ĠColor . WHITE Ġelse ĠColor . BLACK , Ġ 0 . 2 0 F ) Ċ Ċ // method Ġto Ġget Ġrounded Ġfloat Ġstring Ċ fun ĠFloat . to Decimal Format () Ġ= Ġtry Ġ{ ĊĠĠĠ ĠString . format ("% . 2 f ", Ġthis ) Ċ } Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠ Ġe . printStackTrace () ĊĠĠĠ Ġ"" Ċ } Ċ Ċ fun ĠInt . to Contrast Color ( compare Color : ĠInt ) Ġ= Ġif Ġ( this Ġ== Ġcompare Color ) ĊĠĠĠ Ġdar ken Or Light en () Ġelse Ġthis Ċ Ċ fun ĠString . to Colo ured Toast ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġicon : ĠDrawable ?, ĊĠĠĠ ĠbackgroundColor : ĠInt , ĊĠĠĠ Ġvector Color : ĠInt Ċ ) Ġ{ ĊĠĠĠ ĠToast . makeText ( context , Ġthis , ĠToast . LENGTH _ LONG ). apply Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtoast View Ġ= ĠView . inflate ( context , ĠR . layout . custom _ toast , Ġnull ) Ġas ĠMaterial Card View ĊĊĠĠĠĠĠĠĠ Ġtoast View . set Card BackgroundColor ( Color State List . valueOf ( backgroundColor )) ĊĠĠĠĠĠĠĠ Ġtoast View . findViewById < TextView >( R . id . toast _ text ). apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Color Ġ= Ġvector Color . to Contrast Color ( backgroundColor ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( content Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġthis @ to Colo ured Toast ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon ?. let Ġ{ Ġdw Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdw . mutate (). set Tint ( content Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Compound Draw ables Relative With Intr insic Bounds ( dw , Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġview Ġ= Ġtoast View ĊĊĠĠĠ Ġ}. show () Ċ } Ċ Ċ fun ĠString . to Error Toast ( context : ĠContext ) Ġ{ ĊĠĠĠ Ġval Ġinfo Ġ= ĠAppCompat Resources . get Drawable ( context , ĠR . drawable . ic _ info ) ĊĠĠĠ Ġval Ġerror Color Ġ= ĠContext Compat . getColor ( context , ĠR . color . red ) ĊĠĠĠ Ġto Colo ured Toast ( context , Ġinfo , Ġerror Color , Ġerror Color . to Surface Color ()) Ċ } Ċ Ċ fun ĠList < Image Button >. apply Tint ( context : ĠContext , Ġwidget Color : ĠInt ) Ġ{ ĊĠĠĠ ĠforEach Ġ{ Ġimage Button Ġ-> ĊĠĠĠĠĠĠĠ Ġimage Button . drawable . mutate (). set Tint ( widget Color ) ĊĠĠĠĠĠĠĠ Ġimage Button . background Ġ= ĠUtils . create Colo ured R ipple ( context , Ġwidget Color ) ĊĠĠĠ Ġ} Ċ } Ċ