package Ġcom . example . dot aw e ather . ui . view Ċ Ċ import Ġandroid . animation . Animator Set Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroidx . interpol ator . view . animation . Fast Out Slow In Interpolator Ċ import Ġkotlinx . android . synt hetic . main . sun . view .* ĊĊ Ċ class ĠSun View Ġ: ĠView Ġ{ ĊĠĠĠ Ġconstructor ( context : ĠContext ?) Ġ: Ġsuper ( context ) ĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?) Ġ: Ġsuper ( context , Ġattrs ) ĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( ĊĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠ Ġdef Style Attr ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġvar Ġprogress Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġprogress Path Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġpaint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠ Ġprivate Ġval ĠRAD IUS Ġ= ĠUtils . dp To Pixel ( 1 5 f ) ĊĠĠĠ Ġprivate Ġvar Ġpaint C Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠ Ġprivate Ġvar Ġpaint D Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠ Ġprivate Ġvar Ġcurrent Position Ġ= ĠFloat Array ( 2 ) ĊĠĠĠ Ġprivate Ġvar Ġpath Ġ= ĠPath () ĊĠĠĠ Ġprivate Ġvar Ġpath Measure Ġ= ĠPath Measure () ĊĊĠĠĠ Ġfun Ġget Progress (): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprogress ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Progress ( progress : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . progress Ġ= Ġprogress ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Progress Path (): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprogress Path ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Progress Path ( progress Path : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . progress Path Ġ= Ġprogress Path ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġpaint . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= ĠUtils . dp To Pixel ( 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstroke Cap Ġ= ĠPaint . Cap . ROUND ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . parse Color ("# ffffff ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpath Effect : ĠPath Effect Ġ= ĠDash Path Effect ( float ArrayOf ( Utils . dp To Pixel ( 2 0 f ), ĠUtils . dp To Pixel ( 1 0 f )), Ġ 0 f ) ĊĠĠĠĠĠĠĠ Ġpaint . path Effect Ġ= Ġpath Effect ĊĠĠĠĠĠĠĠ Ġpath Ġ= ĠPath () ĊĠĠĠĠĠĠĠ Ġpath . arc To ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . dp To Pixel ( 2 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRAD IUS Ġ+ ĠUtils . dp To Pixel ( 1 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth . toFloat () Ġ- ĠUtils . dp To Pixel ( 2 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . dp To Pixel ( 3 0 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 8 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 8 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ) ĊĠĠĠĠĠĠĠ Ġcanvas ?. draw Path ( path , Ġpaint ) ĊĠĠĠĠĠĠĠ Ġpath Measure Ġ= ĠPath Measure ( path , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġpath Measure . get Pos Tan ( progress , Ġcurrent Position , Ġnull ) ĊĠĠĠĠĠĠĠ Ġpaint C . color Ġ= ĠColor . YELLOW ĊĠĠĠĠĠĠĠ Ġcanvas ?. draw Circle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Position [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Position [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRAD IUS , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint C ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġpath 2 Ġ= ĠPath () ĊĠĠĠĠĠĠĠ Ġpath 2 . arc To ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . dp To Pixel ( 2 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRAD IUS Ġ+ ĠUtils . dp To Pixel ( 1 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth . toFloat () Ġ- ĠUtils . dp To Pixel ( 2 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . dp To Pixel ( 3 0 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 8 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ) ĊĠĠĠĠĠĠĠ Ġpaint D . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= ĠUtils . dp To Pixel ( 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstroke Cap Ġ= ĠPaint . Cap . ROUND ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . YELLOW ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpath Effect D : ĠPath Effect Ġ= ĠDash Path Effect ( float ArrayOf ( Utils . dp To Pixel ( 2 0 f ), ĠUtils . dp To Pixel ( 1 0 f )), Ġ 0 f ) ĊĠĠĠĠĠĠĠ Ġpaint D . path Effect Ġ= Ġpath Effect D ĊĠĠĠĠĠĠĠ Ġcanvas ?. draw Path ( path 2 , Ġpaint D ) ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġanim ( percent : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġanim ator Ġ= ĠObject Animator . of Float ( sun , Ġ" progress ", Ġ 0 f , Ġpath Measure . length Ġ* Ġpercent ) ĊĠĠĠĠĠĠĠ Ġval Ġanim ator Path Ġ= ĠObject Animator . of Float ( sun , Ġ" progress Path ", Ġ 0 f , Ġ 1 8 0 f Ġ* Ġpercent ) ĊĠĠĠĠĠĠĠ Ġval Ġanim ator Set Ġ= ĠAn imator Set () ĊĠĠĠĠĠĠĠ Ġanim ator Set . play To gether ( anim ator , Ġanim ator Path ) ĊĠĠĠĠĠĠĠ Ġanim ator Set . duration Ġ= Ġ 2 0 0 0 ĊĠĠĠĠĠĠĠ Ġanim ator Set . interpol ator Ġ= ĠFast Out Slow In Interpolator () ĊĠĠĠĠĠĠĠ Ġanim ator Set . start () ĊĠĠĠ Ġ} Ċ }