package Ġcom . ab ual g ait . ms ay ed . eg d roid ath ome challenge Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Animator Set Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . drawable . Gradient Drawable Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . animation . Accel erate Interpolator Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . core . animation . do On End ĊĊ Ċ class ĠSpl ash Screen View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style Attr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠLinearLayout ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠ Ġval Ġset Ġ= ĠAn imator Set () ĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġval ĠtextColor Ġ= Ġresources . getColor ( R . color . color Silver ) ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġimg s : ĠArray < ImageView ?> ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠtextView : ĠTextView ĊĠĠĠ Ġprivate Ġvar Ġcircle Ġ= ĠGradient Drawable () ĊĊĠĠĠ Ġval Ġlayout Params Container Ġ= ĊĠĠĠĠĠĠĠ ĠLayout Params ( 1 0 0 . px , ĠViewGroup . LayoutParams . WRAP _ CONTENT ) ĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠ Ġorientation Ġ= ĠV ERT ICAL ĊĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . CENTER ĊĠĠĠĠĠĠĠ Ġbackground Ġ= Ġresources . get Drawable ( R . color . color Background ) ĊĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= ĠLayout Params ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġset LayoutParams ( layout Params ) ĊĠĠĠĠĠĠĠ Ġdraw Circular Bul bs ( 2 0 . px ) ĊĠĠĠĠĠĠĠ Ġdraw F ading Text () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġanimate View () Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġfor Ġ(( index , Ġit ) Ġin Ġimg s . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġimg s . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . addListener ( object Ġ: ĠAn imator . Animator Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( p 0 : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( p 0 : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Set Listeners () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimate View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf ad TextView () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( p 0 : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( p 0 : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscale Down Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetValue Animator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĠD URATION , ĠD URATION Ġ* Ġindex , ĠAccel erate Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġprogress Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. scale X Ġ= Ġprogress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. scale Y Ġ= Ġprogress ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscale Up Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetValue Animator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD URATION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD URATION Ġ* Ġindex , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAccel erate Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġprogress Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. scale X Ġ= Ġprogress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. scale Y Ġ= Ġprogress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset . play ( scale Down ). before ( scale Up ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset . start () ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġf ad TextView () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalpha Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetValue Animator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĠD URATION Ġ* Ġ 4 , ĠD URATION , ĠAccel erate Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġprogress Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . alpha Ġ= Ġprogress ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġalpha . do On End Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . alpha Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġalpha . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġimg s . reverse () ĊĠĠĠĠĠĠĠ Ġanimate View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Circular Bul bs ( size : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġremove All Views () ĊĠĠĠĠĠĠĠ Ġimg s Ġ= ĠarrayOf Null s < ImageView >( OBJECT _ SIZE ) ĊĊĠĠĠĠĠĠĠ Ġcircle . shape Ġ= ĠGradient Drawable . O VAL ĊĠĠĠĠĠĠĠ Ġcircle . setColor ( textColor ) ĊĊĠĠĠĠĠĠĠ Ġlayout Params Container . gravity Ġ= ĠGr avity . CENTER ĊĠĠĠĠĠĠĠ Ġlayout Params Container . set Margins ( M ARGIN , ĠM ARGIN , ĠM ARGIN , ĠM ARGIN ) ĊĊĠĠĠĠĠĠĠ Ġval Ġrel Ġ= ĠarrayOf Null s < LinearLayout >( OBJECT _ SIZE ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠOBJECT _ SIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrel [ i ] Ġ= ĠLinearLayout ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrel [ i ] !!. gravity Ġ= Ġif Ġ( i Ġ% Ġ 2 Ġ== Ġ 0 ) ĠGr avity . START Ġelse ĠGr avity . END ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrel [ i ] !!. layout Params Ġ= Ġlayout Params Container ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimg s [ i ] Ġ= ĠImageView ( context ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimg s [ i ]?. setBackground Drawable ( circle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimg s [ i ]?. layout Params Ġ= ĠLayout Params ( size Ġ* Ġ( i Ġ+ Ġ 1 ), Ġsize Ġ* Ġ( i Ġ+ Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrel [ i ] !!. addView ( imgs [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( rel [ i ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw F ading Text () Ġ{ ĊĠĠĠĠĠĠĠ ĠtextView Ġ= ĠTextView ( context ) ĊĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġcontext . getString ( R . string . eg d roid _ challenge _ str ). toUpperCase () ĊĠĠĠĠĠĠĠ ĠtextView . setTextColor ( textColor ) ĊĠĠĠĠĠĠĠ ĠtextView . text Size Ġ= Ġ 8 . px . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġly Ġ= ĠLayout Params ( LayoutParams . WRAP _ CONTENT , ĠLayout Params . WRAP _ CONTENT ) ĊĠĠĠĠĠĠĠ ĠtextView . layout Params Ġ= Ġly ĊĠĠĠĠĠĠĠ Ġly . set Margins ( M ARGIN , ĠM ARGIN , ĠM ARGIN , ĠM ARGIN ) ĊĠĠĠĠĠĠĠ Ġadd View ( textView ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detached From Window () ĊĠĠĠĠĠĠĠ Ġremove Set Listeners () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġremove Set Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġset . removeAll Listeners () ĊĠĠĠĠĠĠĠ Ġset . end () ĊĠĠĠĠĠĠĠ Ġset . cancel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠOBJECT _ SIZE Ġ= Ġ 4 ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠD URATION Ġ= Ġ 6 0 0 L ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠM ARGIN Ġ= Ġ 1 5 . px ĊĠĠĠ Ġ} Ċ }