/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 ĠN ish ant ĠS riv ast ava Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġgithub . nis r ul z . android utils . k tx . view Ċ Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Outline Ċ import Ġandroid . os . Build Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . View Outline Provider Ċ import Ġandroid . view . animation . Alpha Animation Ċ import Ġandroidx . annotation .* Ċ import Ġandroidx . annotation . Int Range Ċ import Ġgithub . nis r ul z . android utils . k tx . misc . Version Utils Ċ Ċ fun ĠViewGroup . inflate (@ Layout Res Ġlayout Res : ĠInt , Ġattach To Root : ĠBoolean Ġ= Ġfalse ): ĠView Ġ{ ĊĠĠĠ Ġreturn ĠLayoutInflater . from ( context ). inflate ( layout Res , Ġthis , Ġattach To Root ) Ċ } Ċ Ċ fun ĠView . decrease Width By Percentage (@ Int Range ( from Ġ= Ġ 0 , Ġto Ġ= Ġ 1 0 0 ) Ġpercentage De crease : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġdevice Width Ġ= ĠResources . getSystem (). display Metrics . width Pixels ĊĠĠĠ Ġval Ġparams Ġ= Ġthis . layout Params ĊĠĠĠ Ġparams . width Ġ= Ġ( device Width Ġ- Ġ(( device Width Ġ* Ġpercentage De crease ) Ġ/ Ġ 1 0 0 )) ĊĠĠĠ Ġthis . layout Params Ġ= Ġparams Ċ } Ċ Ċ fun ĠView . setup Elevation Property ( value : ĠFloat ) Ġ{ ĊĠĠĠ Ġif Ġ( Version Utils . is L ol lip op ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . elevation Ġ= Ġvalue ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠView . setup Elevation Property (@ Dim en Res Ġid : ĠInt ) Ġ{ ĊĠĠĠ Ġval ĠDEFAULT _ E LE V ATION Ġ= Ġ 8 . 0 f ĊĠĠĠ Ġif Ġ( Version Utils . is L ol lip op ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . setup Elevation Property ( this . context ?. resources ?. get Dimension ( id ) Ġ?: ĠDEFAULT _ E LE V ATION ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠGet Ġthe Ġchildren Ġat Ġindex Ċ operator Ġfun ĠViewGroup . get ( i : ĠInt ): ĠView ? Ġ= Ġget Child At ( i ) Ċ Ċ // Ġ Ġ-= Ċ operator Ġfun ĠViewGroup . minus Assign ( child : ĠView ) Ġ= Ġremove View ( child ) Ċ Ċ // Ġ+= Ċ operator Ġfun ĠViewGroup . plus Assign ( child : ĠView ) Ġ= Ġadd View ( child ) Ċ Ċ // Ġif Ġ( view Ġin Ġviews ) Ċ fun ĠViewGroup . contains ( child : ĠView ) Ġ= ĠindexOf Child ( child ) Ġ!= Ġ- 1 Ċ Ċ fun ĠViewGroup . first (): ĠView ? Ġ= Ġthis [ 0 ] Ċ Ċ inline Ġfun ĠViewGroup . forEach ( action : Ġ( View ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠ Ġaction ( getChild At ( i )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun ĠViewGroup . forEach Indexed ( action : Ġ( Int , ĠView ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠ Ġaction ( i , Ġget Child At ( i )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ // Ġfor Ġ( view Ġin Ġviews . children ()) Ċ fun ĠViewGroup . children () Ġ= Ġobject Ġ: ĠIterable < View > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġiterator () Ġ= Ġobject Ġ: ĠIterator < View > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhas Next () Ġ= Ġindex Ġ< Ġchild Count ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnext () Ġ= Ġget Child At ( index ++) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠView . show With Fade In () Ġ{ ĊĠĠĠ Ġthis . alpha Ġ= Ġ 0 f ĊĠĠĠ Ġthis . show () ĊĠĠĠ Ġthis . animate (). alpha ( 1 f ) Ċ } Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . J EL LY _ BE AN ) Ċ fun ĠView . hide With Fade Out () Ġ{ ĊĠĠĠ Ġthis . alpha Ġ= Ġ 1 f ĊĠĠĠ Ġthis . animate (). alpha ( 0 f ). with End Action Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . hide () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . J EL LY _ BE AN ) Ċ fun ĠView . g one With Fade Out () Ġ{ ĊĠĠĠ Ġthis . alpha Ġ= Ġ 1 f ĊĠĠĠ Ġthis . animate (). alpha ( 0 f ). with End Action Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . g one () ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun ĠView . enable () Ġ{ ĊĠĠĠ Ġif Ġ(! isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . isEnabled Ġ= Ġtrue ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠView . disable () Ġ{ ĊĠĠĠ Ġif Ġ( isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . isEnabled Ġ= Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . H ONE Y COMB ) Ċ @ Ui Thread Ċ inline Ġfun ĠView . fadeOut () Ġ{ ĊĠĠĠ Ġfade Out ( 5 0 0 ) Ċ } Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . H ONE Y COMB ) Ċ @ Ui Thread Ċ inline Ġfun ĠView . fadeIn () Ġ{ ĊĠĠĠ ĠfadeIn ( 5 0 0 ) Ċ } Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . H ONE Y COMB ) Ċ @ Ui Thread Ċ inline Ġfun ĠView . fadeIn ( duration In Ms : ĠLong ) Ġ{ ĊĠĠĠ Ġthis . clear Animation () ĊĠĠĠ Ġval Ġanim Ġ= ĠAlpha Animation ( this . alpha , Ġ 1 . 0 f ) ĊĠĠĠ Ġanim . duration Ġ= Ġduration In Ms ĊĠĠĠ Ġthis . start Animation ( anim ) Ċ } Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . H ONE Y COMB ) Ċ @ Ui Thread Ċ inline Ġfun ĠView . fadeOut ( duration In Ms : ĠLong ) Ġ{ ĊĠĠĠ Ġthis . clear Animation () ĊĠĠĠ Ġval Ġanim Ġ= ĠAlpha Animation ( this . alpha , Ġ 0 . 0 f ) ĊĠĠĠ Ġanim . duration Ġ= Ġduration In Ms ĊĠĠĠ Ġthis . start Animation ( anim ) Ċ } ĊĊ Ċ fun ĠView . get Bitmap (): ĠBitmap Ġ{ ĊĠĠĠ Ġval Ġbmp Ġ= ĠBitmap . create Bitmap ( width , Ġheight , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bmp ) ĊĠĠĠ Ġdraw ( canvas ) ĊĠĠĠ Ġcanvas . save () ĊĠĠĠ Ġreturn Ġbmp Ċ } ĊĊ Ċ fun ĠView . isVisible () Ġ= Ġvisibility Ġ== ĠView . VISIBLE Ċ Ċ fun ĠView . is G one () Ġ= Ġvisibility Ġ== ĠView . GONE Ċ Ċ fun ĠView . isIn visible () Ġ= Ġvisibility Ġ== ĠView . IN VISIBLE Ċ Ċ fun ĠView . g one () Ġ{ ĊĠĠĠ Ġif Ġ( visibility Ġ!= ĠView . GONE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun ĠView . g one If ( block : Ġ() Ġ-> ĠBoolean ) Ġ{ ĊĠĠĠ Ġif Ġ( visibility Ġ!= ĠView . GONE Ġ&& Ġblock ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠView . show () Ġ{ ĊĠĠĠ Ġif Ġ( visibility Ġ!= ĠView . VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun ĠView . visible If ( block : Ġ() Ġ-> ĠBoolean ) Ġ{ ĊĠĠĠ Ġif Ġ( visibility Ġ!= ĠView . VISIBLE Ġ&& Ġblock ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠView . hide () Ġ{ ĊĠĠĠ Ġif Ġ( visibility Ġ!= ĠView . IN VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . IN VISIBLE ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun ĠView . invisible If ( block : Ġ() Ġ-> ĠBoolean ) Ġ{ ĊĠĠĠ Ġif Ġ( visibility Ġ!= ĠView . IN VISIBLE Ġ&& Ġblock ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . IN VISIBLE ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠView . set Height ( value : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġlp Ġ= Ġlayout Params ĊĠĠĠ Ġlp ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġlp . height Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġlayout Params Ġ= Ġlp ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠView . setWidth ( value : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġlp Ġ= Ġlayout Params ĊĠĠĠ Ġlp ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġlp . width Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġlayout Params Ġ= Ġlp ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . LO L LI POP ) Ċ fun ĠView ?. clip To Circle () Ġ{ ĊĠĠĠ Ġthis ?. apply Ġ{ ĊĠĠĠĠĠĠĠ Ġclip To Outline Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġto Ġnull Ġto Ġdisable Ġshadow s ĊĠĠĠĠĠĠĠ Ġoutline Provider Ġ= ĠCircular Outline Provider ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Requires Api ( Build . VERSION _ CODES . LO L LI POP ) Ċ object ĠCircular Outline Provider Ġ: ĠView Outline Provider () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Outline ( view : ĠView , Ġoutline : ĠOut line ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoutline . set O val ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . padding Left , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . padding Top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . width Ġ- Ġview . padding Right , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . height Ġ- Ġview . padding Bottom ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }