package Ġdev . base io . compose playground . ui . animations Ċ Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Rect Ċ import Ġandroidx . compose . animation . core .* Ċ import Ġandroidx . compose . foundation . Canvas Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . click able Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . foundation . shape . Circle Shape Ċ import Ġandroidx . compose . material .* Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . draw . clip Ċ import Ġandroidx . compose . ui . draw . rotate Ċ import Ġandroidx . compose . ui . geometry . Offset Ċ import Ġandroidx . compose . ui . graphics .* Ċ import Ġandroidx . compose . ui . graphics . draw scope . Stroke Ċ import Ġandroidx . compose . ui . platform . Local Density Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . compose . ui . unit . Int Offset Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġdev . base io . compose playground . R Ċ import Ġdev . base io . compose playground . contributors . An mol Ver ma Ċ import Ġdev . base io . compose playground . ui . theme . Typography Ċ import Ġkotlin . math . cos Ċ import Ġkotlin . math . sin Ċ Ċ /** Ċ Ġ* Ġhttps :// github . com / amos gy am fi / swift ui - animation - library # yahoo - weather - sun -- moon Ċ Ġ*/ Ċ @ Composable Ċ fun ĠY ahoo Weather And Sun ( modifier : ĠModifier ) Ġ{ ĊĊĠ Ġval Ġinfinite Transition Ġ= Ġremember Infinite Transition () ĊĠ Ġval Ġangle Rotation Ġby Ġinfinite Transition . animate Float ( ĊĠĠĠ Ġinitial Value Ġ= Ġ 2 0 f , ĊĠĠĠ Ġtarget Value Ġ= Ġ 1 4 5 f , ĊĠĠĠ Ġanimation Spec Ġ= Ġinfinite Repeat able ( ĊĠĠĠĠĠ Ġanimation Ġ= Ġt ween ( duration Millis Ġ= Ġ 5 0 0 0 , Ġdelay Millis Ġ= Ġ 2 0 0 0 , Ġeasing Ġ= ĠLinear E asing ), ĊĠĠĠĠĠ Ġrepeat Mode Ġ= ĠRepeat Mode . Reverse ĊĠĠĠ Ġ) ĊĠ Ġ) ĊĊĊĠ Ġval Ġscale Rect Ġby Ġinfinite Transition . animate Float ( ĊĠĠĠ Ġinitial Value Ġ= Ġ 0 f , ĊĠĠĠ Ġtarget Value Ġ= Ġ 0 . 9 f , ĊĠĠĠ Ġanimation Spec Ġ= Ġinfinite Repeat able ( ĊĠĠĠĠĠ Ġanimation Ġ= Ġt ween ( duration Millis Ġ= Ġ 5 0 0 0 , Ġdelay Millis Ġ= Ġ 2 0 0 0 , Ġeasing Ġ= ĠLinear E asing ), ĊĠĠĠĠĠ Ġrepeat Mode Ġ= ĠRepeat Mode . Reverse ĊĠĠĠ Ġ) ĊĠ Ġ) ĊĊĠ Ġval Ġrad ian Ġby Ġinfinite Transition . animate Float ( ĊĠĠĠ Ġinitial Value Ġ= Ġ- 3 f , ĊĠĠĠ Ġtarget Value Ġ= Ġ- 1 f , ĊĠĠĠ Ġanimation Spec Ġ= Ġinfinite Repeat able ( ĊĠĠĠĠĠ Ġanimation Ġ= Ġt ween ( duration Millis Ġ= Ġ 5 0 0 0 , Ġdelay Millis Ġ= Ġ 2 0 0 0 , Ġeasing Ġ= ĠLinear E asing ), ĊĠĠĠĠĠ Ġrepeat Mode Ġ= ĠRepeat Mode . Reverse ĊĠĠĠ Ġ) ĊĠ Ġ) ĊĊĠ Ġvar Ġicon X Ġby Ġremember Ġ{ ĊĠĠĠ Ġmutable State Of ( 0 f ) ĊĠ Ġ} ĊĊĠ Ġvar Ġicon Y Ġby Ġremember Ġ{ ĊĠĠĠ Ġmutable State Of ( 0 f ) ĊĠ Ġ} ĊĊĊĠ ĠBox ( ĊĠĠĠ Ġmodifier ĊĠĠĠĠĠ Ġ. background ( Color ( 0 xff 1 1 2 9 3 7 )) ĊĠ Ġ) Ġ{ ĊĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠ Ġ. fill MaxSize () ĊĠĠĠĠĠĠĠ Ġ. click able Ġ{} ĊĠĠĠĠĠĠĠ Ġ. padding ( 4 . dp ), ĊĠĠĠĠĠ Ġvertical Arrange ment Ġ= ĠArrange ment . Space Around , ĊĠĠĠĠĠ Ġhorizontal Alignment Ġ= ĠAlignment . Center H orizontally ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġstring Resource ( id Ġ= ĠR . string . sun _ moon ), ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠTypography . h 5 . copy ( color Ġ= ĠColor . White ), ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ ĠBox Ġ{ ĊĠĠĠĠĠĠĠ ĠPath Arc Canvas ( Modifier . align ( Alignment . Center ), Ġscale Rect , Ġrad ian ) Ġ{ Ġx , Ġy Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġicon X Ġ= Ġx ĊĠĠĠĠĠĠĠĠĠ Ġicon Y Ġ= Ġy ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġpainter Resource ( id Ġ= ĠR . drawable . ic _ sun ), ĊĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. offset Ġ{ ĠInt Offset ( icon X . toInt (), Ġicon Y . toInt ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. rotate ( angle Rotation ), ĊĠĠĠĠĠĠĠĠĠ Ġt int Ġ= ĠColor ( 0 xfff 9 d 7 1 c ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. clip ( Circle Shape ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. align ( Alignment . Center ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ( 3 2 0 . dp ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠCont ained Canvas ( scale Rect ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠ Ġ. height ( 2 0 0 . dp ) ĊĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAn mol Ver ma ( Modifier . align ( Alignment . Center )) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } ĊĊ Ċ @ Composable Ċ private Ġfun ĠCont ained Canvas ( scale Rect : ĠFloat ) Ġ{ ĊĠ ĠBox ( ĊĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠ Ġ. width ( 3 0 0 . dp ) ĊĠĠĠĠĠ Ġ. height ( 1 6 0 . dp ) ĊĠĠĠĠĠ Ġ. graphics Layer ( ĊĠĠĠĠĠĠĠ Ġtransform Origin Ġ= ĠTransform Origin ( 0 f , Ġ 0 f ), ĊĠĠĠĠĠĠĠ Ġscale X Ġ= Ġscale Rect , Ġscale Y Ġ= Ġ 1 f , Ġalpha Ġ= Ġ 0 . 1 f ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ. background ( Color ( 0 xfff 9 d 7 1 c )), ĊĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠPath Arc Canvas ( ĊĠ Ġmodifier : ĠModifier , ĊĠ Ġscale Rect : ĠFloat , ĊĠ Ġrad ian : ĠFloat , ĊĠ Ġupdated Position : Ġ( Float , ĠFloat ) Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠ Ġval Ġcircle Radius Ġ= ĠLocal Density . current . run Ġ{ Ġ 8 . dp . to Px () Ġ} ĊĠ Ġval Ġwidth Of Circle Ġ= ĠLocal Density . current . run Ġ{ Ġ 3 2 0 . dp . to Px () Ġ} ĊĊĠ Ġvar Ġcenter Point Ġby Ġremember Ġ{ ĊĠĠĠ Ġmutable State Of ( Offset . Zero ) ĊĠ Ġ} ĊĊĠ Ġvar Ġx Ġby Ġremember Ġ{ ĊĠĠĠ Ġmutable State Of ( 0 f ) ĊĠ Ġ} ĊĊĠ Ġvar Ġy Ġby Ġremember Ġ{ ĊĠĠĠ Ġmutable State Of ( 0 f ) ĊĠ Ġ} ĊĊĊĠ ĠLa unched Effect ( key 1 Ġ= Ġscale Rect , Ġblock Ġ= Ġ{ ĊĠĠĠ Ġval Ġorbit Radius Ġ= Ġwidth Of Circle . div ( 2 ) ĊĠĠĠ Ġx Ġ= Ġ( center Point . x Ġ+ Ġcos ( rad ian ) Ġ* Ġorbit Radius . plus ( circle Radius . times ( 2 ))) ĊĠĠĠ Ġy Ġ= Ġ( center Point . y Ġ+ Ġsin ( rad ian ) Ġ* Ġorbit Radius . plus ( circle Radius . times ( 2 ))) ĊĠĠĠ Ġupdated Position ( x , Ġy ) ĊĠ Ġ}) ĊĊĠ ĠCanvas ( modifier Ġ= Ġmodifier . size ( 3 2 0 . dp ), Ġon Draw Ġ= Ġ{ ĊĠĠĠ Ġcenter Point Ġ= Ġthis . center ĊĠĠĠ Ġval Ġfirst Circle Ġ= Ġcenter Point . copy ( x Ġ= Ġcenter Point . x . minus ( width Of Circle Ġ/ Ġ 2 )) ĊĠĠĠ Ġval Ġsecond Circle Ġ= Ġcenter Point . copy ( x Ġ= Ġcenter Point . x . plus ( width Of Circle Ġ/ Ġ 2 )) ĊĠĠĠ Ġdraw Arc ( ĊĠĠĠĠĠ Ġcolor Ġ= ĠColor ( 0 xfff 9 d 7 1 c ), ĊĠĠĠĠĠ Ġstyle Ġ= ĠSt roke ( ĊĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 1 f , ĊĠĠĠĠĠĠĠ Ġpath Effect Ġ= ĠPath Effect . dash Path Effect ( intervals Ġ= Ġfloat ArrayOf ( 2 7 f , Ġ 2 7 f )) ĊĠĠĠĠĠ Ġ), Ġuse Center Ġ= Ġfalse , ĊĠĠĠĠĠ Ġstart Angle Ġ= Ġ 1 8 0 f , ĊĠĠĠĠĠ Ġsweep Angle Ġ= Ġ 1 8 0 f ĊĠĠĠ Ġ) ĊĊĊĠĠĠ Ġdraw Line ( ĊĠĠĠĠĠ ĠColor . White . copy ( 0 . 5 f ), ĊĠĠĠĠĠ Ġstart Ġ= Ġfirst Circle . copy ( x Ġ= Ġfirst Circle . x . minus ( 8 0 f )), ĊĠĠĠĠĠ Ġsecond Circle . copy ( x Ġ= Ġsecond Circle . x . plus ( 8 0 f )), ĊĠĠĠĠĠĠ 4 f ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdraw Circle ( ĊĠĠĠĠĠ ĠColor ( 0 xfff 9 d 7 1 c ), ĊĠĠĠĠĠ Ġradius Ġ= Ġcircle Radius , ĊĠĠĠĠĠ Ġcenter Ġ= Ġfirst Circle ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdraw Circle ( ĊĠĠĠĠĠ ĠColor ( 0 xfff 9 d 7 1 c ), ĊĠĠĠĠĠ Ġradius Ġ= Ġcircle Radius , ĊĠĠĠĠĠ Ġcenter Ġ= Ġsecond Circle ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġpaint 1 Ġ= Ġtext paint () ĊĠĠĠ Ġval Ġrect 1 Ġ= ĠRect () ĊĠĠĠ Ġpaint 1 . getText Bounds ( first Time , Ġ 0 , Ġfirst Time . length , Ġrect 1 ); ĊĊĠĠĠ Ġdraw Context . canvas . native Canvas . draw Text ( ĊĠĠĠĠĠ Ġfirst Time , ĊĠĠĠĠĠ Ġfirst Circle . x . minus ( rect 1 . width () Ġ/ Ġ 2 ), ĊĠĠĠĠĠ Ġfirst Circle . y . plus ( rect 1 . height (). times ( 4 )), ĊĠĠĠĠĠ Ġpaint 1 ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġpaint 2 Ġ= Ġtext paint () ĊĠĠĠ Ġval Ġrect 2 Ġ= ĠRect () ĊĠĠĠ Ġpaint 2 . getText Bounds ( second Time , Ġ 0 , Ġsecond Time . length , Ġrect 2 ); ĊĊĠĠĠ Ġdraw Context . canvas . native Canvas . draw Text ( ĊĠĠĠĠĠ Ġsecond Time , ĊĠĠĠĠĠ Ġsecond Circle . x . minus ( rect 2 . width () Ġ/ Ġ 2 ), ĊĠĠĠĠĠ Ġsecond Circle . y . plus ( rect 2 . height (). times ( 4 )), ĊĠĠĠĠĠ Ġpaint 2 ĊĠĠĠ Ġ) ĊĠ Ġ}) Ċ } Ċ Ċ const Ġval Ġfirst Time Ġ= Ġ" 5 : 4 4 ĠAM " Ċ const Ġval Ġsecond Time Ġ= Ġ" 7 : 0 0 ĠPM " Ċ private Ġfun Ġtext paint (): ĠPaint Ġ{ ĊĠ Ġreturn ĠPaint (). apply Ġ{ ĊĠĠĠ Ġthis . color Ġ= Ġandroid . graphics . Color . WHITE ĊĠĠĠ Ġthis . text Size Ġ= Ġ 3 2 f ĊĠ Ġ} Ċ }