package Ġdev . base io . compose playground . ui . animations Ċ Ċ import Ġandroidx . compose . animation . Animated Visibility Ċ import Ġandroidx . compose . animation . core . Anim atable Ċ import Ġandroidx . compose . animation . core . Animation Vector 1 D Ċ import Ġandroidx . compose . animation . core . Fast Out Linear In E asing Ċ import Ġandroidx . compose . animation . core . t ween Ċ import Ġandroidx . compose . foundation . Canvas Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . material . Experimental Material Api Ċ import Ġandroidx . compose . material . Icon Ċ import Ġandroidx . compose . material . ListItem Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . material . icons . filled . Face Ċ import Ġandroidx . compose . material . icons . filled . Favorite Border Ċ import Ġandroidx . compose . material . icons . filled . Home Ċ import Ġandroidx . compose . material . icons . filled . Shopping Cart Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . draw . alpha Ċ import Ġandroidx . compose . ui . draw . scale Ċ import Ġandroidx . compose . ui . geometry . Corner Radius Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . draw scope . Fill Ċ import Ġandroidx . compose . ui . graphics . draw scope . Stroke Ċ import Ġandroidx . compose . ui . platform . Local Configuration Ċ import Ġandroidx . compose . ui . platform . Local Density Ċ import Ġandroidx . compose . ui . text . Annotated String Ċ import Ġandroidx . compose . ui . text . Span Style Ċ import Ġandroidx . compose . ui . text . build Annotated String Ċ import Ġandroidx . compose . ui . text . font . Font Family Ċ import Ġandroidx . compose . ui . text . font . Font Weight Ċ import Ġandroidx . compose . ui . unit . Int Offset Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġdev . base io . compose playground . contributors . An mol Ver ma Ċ import Ġdev . base io . compose playground . ui . theme . Typography Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . join All Ċ import Ġkotlinx . coroutines . launch Ċ Ċ val Ġbg Color Ġ= ĠColor ( 2 0 , Ġ 4 7 , Ġ 6 5 ) Ċ val Ġgreen Android Color Ġ= ĠColor ( 1 1 3 , Ġ 2 1 7 , Ġ 1 4 0 ) Ċ val Ġblue Color Ġ= ĠColor ( 8 3 , Ġ 1 3 2 , Ġ 2 3 7 ) Ċ Ċ /** Ċ Ġ* Ġhttps :// twitter . com / android dev / status / 1 5 0 4 5 6 4 0 5 2 0 2 6 0 8 1 2 8 6 ? s = 1 2 Ċ Ġ*/ Ċ Ċ @ Composable Ċ fun ĠAndroid Mad Skills () Ġ{ ĊĠ Ġval Ġwidth DP Ġ= ĠLocal Configuration . current . screen Width Dp . dp ĊĠ Ġval Ġheight DP Ġ= ĠLocal Configuration . current . screen Height Dp . dp ĊĊĠ Ġval Ġwidth PX Ġ= Ġwith ( Local Density . current ) Ġ{ ĊĠĠĠ Ġwidth DP . to Px () ĊĠ Ġ} ĊĠ Ġval Ġheight PX Ġ= Ġwith ( Local Density . current ) Ġ{ ĊĠĠĠ Ġheight DP . to Px () ĊĠ Ġ} ĊĊĠ Ġval Ġo val Size Px Ġ= Ġwith ( Local Density . current ) Ġ{ ĊĠĠĠĠ 2 0 0 . dp . to Px () ĊĠ Ġ} ĊĊĠ Ġval Ġfirst O val X Ġ= Ġremember Ġ{ ĊĠĠĠ ĠAnim atable ( 0 f . minus ( oval Size Px . times ( 2 ))) ĊĠ Ġ} ĊĠ Ġval Ġfirst O val Y Ġ= Ġremember Ġ{ ĊĠĠĠ ĠAnim atable ( height PX . div ( 2 ). minus ( oval Size Px . div ( 2 ))) ĊĠ Ġ} ĊĊĠ Ġval Ġo val Width Ġ= Ġremember Ġ{ ĊĠĠĠ ĠAnim atable ( oval Size Px . times ( 2 )) ĊĠ Ġ} ĊĠ Ġval Ġo val Height Ġ= Ġremember Ġ{ ĊĠĠĠ ĠAnim atable ( oval Size Px ) ĊĠ Ġ} ĊĊĠ Ġval Ġcorner Radius X Ġ= Ġremember Ġ{ ĊĠĠĠ ĠAnim atable ( 4 0 0 f ) ĊĠ Ġ} ĊĊĠ Ġval Ġcorner Radius Y Ġ= Ġremember Ġ{ ĊĠĠĠ ĠAnim atable ( 3 6 0 f ) ĊĠ Ġ} ĊĊĊĠ Ġval Ġsecond O val X Ġ= Ġremember Ġ{ ĊĠĠĠ ĠAnim atable ( width PX ) ĊĠ Ġ} ĊĠ Ġval Ġsecond O val Y Ġ= Ġremember Ġ{ ĊĠĠĠ ĠAnim atable ( height PX . div ( 2 ). minus ( oval Size Px . div ( 2 ))) ĊĠ Ġ} ĊĊĠ Ġval Ġmake Mad Ġ= Ġremember Ġ{ ĊĠĠĠ Ġmutable State Of ( false ) ĊĠ Ġ} ĊĊĠ Ġval Ġmake Mad Alpha Ġ= Ġremember Ġ{ ĊĠĠĠ ĠAnim atable ( 0 f ) ĊĠ Ġ} ĊĊĠ Ġ// Ġframe Ġ 2 ĊĠ Ġval Ġmad Text X Ġ= Ġremember Ġ{ ĊĠĠĠ ĠAnim atable (( width PX . times ( 0 . 0 1 f ))) ĊĠ Ġ} ĊĊĠ Ġval Ġmad Text Y Ġ= Ġremember Ġ{ ĊĠĠĠ ĠAnim atable ( height PX . div ( 2 )) ĊĠ Ġ} ĊĊĠ Ġval Ġlt ad X Ġ= Ġremember Ġ{ ĊĠĠĠ ĠAnim atable ( width PX . times ( 0 . 0 5 f )) ĊĠ Ġ} ĊĊĠ Ġval Ġlt ad Y Ġ= Ġremember Ġ{ ĊĠĠĠ ĠAnim atable ( height PX . plus ( 1 0 0 f )) ĊĠ Ġ} ĊĊĠ Ġval Ġalpha LT AD Column Ġ= Ġremember Ġ{ ĊĠĠĠ ĠAnim atable ( 0 f ) ĊĠ Ġ} ĊĊĠ Ġval Ġmad Text Scale Ġ= Ġremember Ġ{ ĊĠĠĠ ĠAnim atable ( 1 f ) ĊĠ Ġ} ĊĊĠ Ġval Ġanimation Scope Ġ= Ġremember Coroutine Scope () ĊĊĠ Ġval Ġshow Creator Ġ= Ġremember Ġ{ ĊĠĠĠ Ġmutable State Of ( false ) ĊĠ Ġ} ĊĊĊĠ ĠLa unched Effect ( key 1 Ġ= Ġtrue , Ġblock Ġ= Ġ{ ĊĠĠĠ Ġdelay ( 5 0 0 0 ) ĊĠĠĠ Ġfirst Frame First Job ( ĊĠĠĠĠĠ Ġwidth PX , ĊĠĠĠĠĠ Ġo val Size Px , ĊĠĠĠĠĠ Ġanimation Scope , ĊĠĠĠĠĠ Ġfirst O val X , ĊĠĠĠĠĠ Ġsecond O val X , ĊĠĠĠĠĠ Ġo val Width , ĊĠĠĠĠĠ Ġo val Height , Ġcorner Radius X , Ġcorner Radius Y ĊĠĠĠ Ġ) ĊĠĠĠ Ġdelay ( 2 0 0 ) ĊĠĠĠ Ġfirst Frame Second Job ( ĊĠĠĠĠĠ Ġanimation Scope , ĊĠĠĠĠĠ Ġfirst O val X , ĊĠĠĠĠĠ Ġo val Size Px , ĊĠĠĠĠĠ Ġsecond O val X , ĊĠĠĠĠĠ Ġwidth PX , ĊĠĠĠĠĠ Ġo val Width , ĊĠĠĠĠĠ Ġo val Height , Ġcorner Radius X , Ġcorner Radius Y ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġsecond Frame Job ( ĊĠĠĠĠĠĠĠ Ġmad Text X , ĊĠĠĠĠĠĠĠ Ġmad Text Y , ĊĠĠĠĠĠĠĠ Ġanimation Scope , ĊĠĠĠĠĠĠĠ Ġ( width PX . times ( 0 . 0 5 f )), ĊĠĠĠĠĠĠĠ Ġwidth PX . times ( 0 . 2 f ), ĊĠĠĠĠĠĠĠ Ġmake Mad , ĊĠĠĠĠĠĠĠ Ġmad Text Scale , ĊĠĠĠĠĠĠĠ Ġheight PX . div ( 4 . 5 f ), ĊĠĠĠĠĠĠĠ Ġmake Mad Alpha , ĊĠĠĠĠĠĠĠ Ġlt ad Y , ĊĠĠĠĠĠĠĠ Ġheight PX . div ( 2 . 8 f ), ĊĠĠĠĠĠĠĠ Ġalpha LT AD Column , ĊĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠ Ġsecond Frame Circ les Job ( ĊĠĠĠĠĠĠĠ Ġfirst O val X , ĊĠĠĠĠĠĠĠ Ġfirst O val Y , ĊĠĠĠĠĠĠĠ Ġsecond O val X , ĊĠĠĠĠĠĠĠ Ġsecond O val Y , ĊĠĠĠĠĠĠĠ Ġo val Height , ĊĠĠĠĠĠĠĠ Ġo val Width , ĊĠĠĠĠĠĠĠ Ġo val Size Px , Ġwidth PX , Ġheight PX , Ġanimation Scope , show Creator ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠ Ġ}) ĊĊĊĠ ĠBox ( ĊĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠ Ġ. fill MaxSize () ĊĠĠĠĠĠ Ġ. background ( bgColor ) ĊĠ Ġ) Ġ{ ĊĠĠĠ ĠFrame Two ( ĊĠĠĠĠĠ Ġtext X Ġ= Ġmad Text X , ĊĠĠĠĠĠ Ġtext Y Ġ= Ġmad Text Y , ĊĠĠĠĠĠ Ġlt ad X , ĊĠĠĠĠĠ Ġlt ad Y , ĊĠĠĠĠĠ Ġmad Text Scale , ĊĠĠĠĠĠ Ġmake Mad . value , ĊĠĠĠĠĠ Ġmake Mad Alpha , Ġalpha LT AD Column ĊĠĠĠ Ġ) ĊĠĠĠ ĠFrame One ( ĊĠĠĠĠĠ Ġfirst O val X , ĊĠĠĠĠĠ Ġfirst O val Y , ĊĠĠĠĠĠ Ġcorner Radius X , ĊĠĠĠĠĠ Ġcorner Radius Y , ĊĠĠĠĠĠ Ġo val Width , ĊĠĠĠĠĠ Ġo val Height , ĊĠĠĠĠĠ Ġsecond O val X , ĊĠĠĠĠĠ Ġsecond O val Y ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġif Ġ( show Creator . value ) Ġ{ ĊĠĠĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠ Ġ. align ( Alignment . Top End ) ĊĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAn mol Ver ma ( Modifier . padding ( 2 4 . dp ). align ( Alignment . Center )) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ fun Ġsecond Frame Circ les Job ( ĊĠ Ġfirst O val X : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġfirst O val Y : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġsecond O val X : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġsecond O val Y : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġo val Height : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġo val Width : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġo val Size Px : ĠFloat , ĊĠ Ġwidth PX : ĠFloat , ĊĠ Ġheight PX : ĠFloat , ĊĠ Ġanimation Scope : ĠCor outine Scope , ĊĠ Ġshow Creator : ĠMutable State < Boolean >, Ċ ) Ġ{ ĊĠ Ġanimation Scope . launch Ġ{ ĊĠĠĠ Ġanimation Scope . launch Ġ{ ĊĠĠĠĠĠ Ġfirst O val X . snap To ( width PX . times ( 2 . 2 f )) ĊĠĠĠĠĠ Ġfirst O val Y . snap To ( height PX . times (- 0 . 2 f )) ĊĠĠĠĠĠ Ġsecond O val X . snap To ( width PX . times (- 0 . 6 f )) ĊĠĠĠĠĠ Ġsecond O val Y . snap To ( height PX . times (- 0 . 8 f )) ĊĠĠĠĠĠ Ġdelay ( 5 0 0 ) ĊĠĠĠĠĠ Ġfirst O val X . animate To ( width PX . times ( 0 . 8 f )) ĊĠĠĠĠĠ Ġfirst O val Y . animate To ( height PX . times ( 0 . 2 f )) ĊĠĠĠĠĠ Ġsecond O val X . animate To ( width PX . times ( 0 . 6 f )) ĊĠĠĠĠĠ Ġsecond O val Y . animate To ( height PX . times ( 0 . 8 f )) ĊĠĠĠĠĠ Ġanimation Scope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġo val Height . animate To ( oval Size Px . times ( 2 )) ĊĠĠĠĠĠĠĠ Ġo val Width . animate To ( oval Size Px ) ĊĠĠĠĠĠĠĠ Ġsecond O val Y . animate To ( height PX . times ( 0 . 4 f ), Ġt ween ( duration Millis Ġ= Ġ 5 0 0 , Ġdelay Millis Ġ= Ġ 4 0 0 )) ĊĠĠĠĠĠĠĠ Ġshow Creator . value Ġ= Ġtrue ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠ Ġ} Ċ } Ċ Ċ fun Ġsecond Frame Job ( ĊĠ Ġmad Text X : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġmad Text Y : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġanimation Scope : ĠCor outine Scope , ĊĠ Ġend X Text : ĠFloat , ĊĠ Ġtowards Center : ĠFloat , ĊĠ Ġmake Mad : ĠMutable State < Boolean >, ĊĠ Ġmad Text Scale : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġend Y : ĠFloat , ĊĠ Ġmake Mad Alpha : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġlt ad Y : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġlt ad Y End : ĠFloat , ĊĠ Ġalpha Column : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĊĠ Ġ) Ġ{ ĊĠ Ġanimation Scope . launch Ġ{ ĊĠĠĠ Ġmake Mad Alpha . animate To ( 1 f , Ġt ween ( duration Millis Ġ= Ġ 3 0 0 )) ĊĠĠĠ Ġmad Text X . animate To ( tow ards Center , Ġt ween ( duration Millis Ġ= Ġ 1 0 0 0 )) ĊĠĠĠ Ġdelay ( 2 0 0 ) ĊĠĠĠ Ġmake Mad . value Ġ= Ġtrue ĊĠĠĠ Ġmad Text X . animate To ( end X Text ) ĊĠĠĠ Ġanimation Scope . launch Ġ{ ĊĠĠĠĠĠ Ġmake Mad Alpha . animate To ( 0 f , Ġt ween ( 1 0 0 0 )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġmad Text Scale . animate To ( 1 . 2 f , Ġt ween ( 1 0 0 0 )) ĊĠĠĠ Ġmad Text Y . animate To ( end Y , Ġt ween ( 1 0 0 0 )) ĊĠĠĠ Ġ// Ġwe Ġmake Ġthe Ġtext ĠM AD Ġand Ġthen Ġappend ĠSk ills Ġto Ġit . ĊĠĠĠ Ġdelay ( 2 0 0 ) ĊĠĠĠ Ġanimation Scope . launch Ġ{ ĊĠĠĠĠĠ Ġalpha Column . animate To ( 1 f , Ġt ween ( 8 0 0 )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġlt ad Y . animate To ( lt ad Y End , Ġt ween ( 2 0 0 )) ĊĠĠĠ Ġdelay ( 4 0 0 ) ĊĠĠĠ Ġalpha Column . animate To ( 0 . 2 f , Ġt ween ( 8 0 0 )) ĊĠ Ġ} Ċ Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠFrame Two ( ĊĠ Ġtext X : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġtext Y : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġlt ad X : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġlt ad Y : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġmad Text Scale : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġmake Mad : ĠBoolean , ĊĠ Ġmake Mad Alpha : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġalpha Column : ĠAnim atable < Float , ĠAnimation Vector 1 D > Ċ ) Ġ{ ĊĠ ĠText ( ĊĠĠĠ Ġtext Ġ= Ġbuild Annotated String Ġ{ ĊĠĠĠĠĠ Ġappend ( ĊĠĠĠĠĠĠĠ ĠAnnot ated String ( ĊĠĠĠĠĠĠĠĠĠ Ġ" M ", ĊĠĠĠĠĠĠĠĠĠ Ġspan Style Ġ= ĠSpan Style ( color Ġ= Ġgreen Android Color , ĠfontWeight Ġ= ĠFontWeight . Bold ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġappend ( ĊĠĠĠĠĠĠĠ ĠAnnot ated String ( ĊĠĠĠĠĠĠĠĠĠ Ġ" od ern Ġ", ĊĠĠĠĠĠĠĠĠĠ Ġspan Style Ġ= ĠSpan Style ( color Ġ= Ġblue Color , ĠfontWeight Ġ= ĠFontWeight . Bold ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠ Ġappend ( ĊĠĠĠĠĠĠĠ ĠAnnot ated String ( ĊĠĠĠĠĠĠĠĠĠ Ġ" A ", ĊĠĠĠĠĠĠĠĠĠ Ġspan Style Ġ= ĠSpan Style ( color Ġ= Ġgreen Android Color , ĠfontWeight Ġ= ĠFontWeight . Bold ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġappend ( ĊĠĠĠĠĠĠĠ ĠAnnot ated String ( ĊĠĠĠĠĠĠĠĠĠ Ġ" nd roid Ġ", ĊĠĠĠĠĠĠĠĠĠ Ġspan Style Ġ= ĠSpan Style ( color Ġ= Ġblue Color , ĠfontWeight Ġ= ĠFontWeight . Bold ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġappend ( ĊĠĠĠĠĠĠĠ ĠAnnot ated String ( ĊĠĠĠĠĠĠĠĠĠ Ġ" D ", ĊĠĠĠĠĠĠĠĠĠ Ġspan Style Ġ= ĠSpan Style ( color Ġ= Ġgreen Android Color , ĠfontWeight Ġ= ĠFontWeight . Bold ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġappend ( ĊĠĠĠĠĠĠĠ ĠAnnot ated String ( ĊĠĠĠĠĠĠĠĠĠ Ġ" e velopment Ġ", ĊĠĠĠĠĠĠĠĠĠ Ġspan Style Ġ= ĠSpan Style ( color Ġ= Ġblue Color , ĠfontWeight Ġ= ĠFontWeight . Bold ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}, ĊĠĠĠ Ġstyle Ġ= ĠTypography . h 4 . copy ( fontFamily Ġ= ĠFont Family . Mono space ), ĊĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠ Ġ. offset Ġ{ ĠInt Offset ( x Ġ= Ġtext X . value . toInt (), Ġy Ġ= Ġtext Y . value . toInt ()) Ġ} ĊĠĠĠĠĠ Ġ. scale ( mad Text Scale . value ) ĊĠĠĠĠĠ Ġ. alpha ( make Mad Alpha . value ) ĊĠ Ġ) ĊĊĠ ĠAnimated Visibility ( visible Ġ= Ġmake Mad ) Ġ{ ĊĠĠĠ ĠText ( ĊĠĠĠĠĠ Ġtext Ġ= Ġ" M AD ĠSk ills ", ĊĠĠĠĠĠ Ġstyle Ġ= ĠTypography . h 4 . copy ( ĊĠĠĠĠĠĠĠ ĠfontFamily Ġ= ĠFont Family . Mono space , ĊĠĠĠĠĠĠĠ Ġcolor Ġ= Ġgreen Android Color , ĊĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Bold ĊĠĠĠĠĠ Ġ), ĊĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠ Ġ. offset Ġ{ ĠInt Offset ( x Ġ= Ġtext X . value . toInt (), Ġy Ġ= Ġtext Y . value . toInt ()) Ġ} ĊĠĠĠĠĠĠĠ Ġ. scale ( mad Text Scale . value ) ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĠ ĠLT AD Column ( lt ad X . value , Ġlt ad Y . value , Ġalpha Column . value ) Ċ Ċ } Ċ Ċ @ Opt In ( Experimental Material Api :: class ) Ċ @ Composable Ċ fun ĠLT AD Column ( lt ad X : ĠFloat , Ġlt ad Y : ĠFloat , Ġalpha : ĠFloat ) Ġ{ ĊĠ ĠColumn ( Modifier . offset Ġ{ ĠInt Offset ( lt ad X . toInt (), Ġlt ad Y . toInt ()) Ġ}) Ġ{ ĊĠĠĠ ĠListItem ( icon Ġ= Ġ{ ĊĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Default . Shopping Cart , ĊĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġt int Ġ= Ġgreen Android Color , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . size ( 3 6 . dp ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}, Ġtext Ġ= Ġ{ ĊĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" Language ", ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠTypography . h 5 . copy ( font Weight Ġ= ĠFontWeight . Bold ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}, Ġmodifier Ġ= ĠModifier . alpha ( alpha )) ĊĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . height ( 8 . dp )) ĊĠĠĠ ĠListItem ( icon Ġ= Ġ{ ĊĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Default . Face , Ġcontent Description Ġ= Ġnull , Ġt int Ġ= Ġblue Color , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . size ( 3 6 . dp ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}, Ġtext Ġ= Ġ{ ĊĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" Tools ", Ġstyle Ġ= ĠTypography . h 5 . copy ( font Weight Ġ= ĠFontWeight . Bold ), ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}, Ġmodifier Ġ= ĠModifier . alpha ( alpha )) ĊĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . height ( 8 . dp )) ĊĠĠĠ ĠListItem ( icon Ġ= Ġ{ ĊĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Default . Home , ĊĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġt int Ġ= Ġgreen Android Color , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . size ( 3 6 . dp ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}, Ġtext Ġ= Ġ{ ĊĠĠĠĠĠ ĠText ( text Ġ= Ġ" API s ", Ġstyle Ġ= ĠTypography . h 5 . copy ( font Weight Ġ= ĠFontWeight . Bold )) ĊĠĠĠ Ġ}) ĊĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . height ( 8 . dp )) ĊĠĠĠ ĠListItem ( icon Ġ= Ġ{ ĊĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Default . Favorite Border , Ġcontent Description Ġ= Ġnull , Ġt int Ġ= Ġblue Color , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . size ( 3 6 . dp ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}, Ġtext Ġ= Ġ{ ĊĠĠĠĠĠ ĠText ( text Ġ= Ġ" Distribution ", Ġstyle Ġ= ĠTypography . h 5 . copy ( font Weight Ġ= ĠFontWeight . Bold )) ĊĠĠĠ Ġ}, Ġmodifier Ġ= ĠModifier . alpha ( alpha )) ĊĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠFrame One ( ĊĠ Ġfirst O val X : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġfirst O val Y : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġcorner Radius X : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġcorner Radius Y : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġo val Scale X : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġo val Scale Y : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġsecond O val X : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġsecond O val Y : ĠAnim atable < Float , ĠAnimation Vector 1 D > Ċ ) Ġ{ ĊĠ ĠO val ( ĊĠĠĠ Ġfirst O val X . value , ĊĠĠĠ Ġfirst O val Y . value , ĊĠĠĠ Ġcorner Radius X . value , ĊĠĠĠ Ġcorner Radius Y . value , ĊĠĠĠ Ġgreen Android Color , ĊĠĠĠ Ġfalse , ĊĠĠĠĠ 0 f , ĊĠĠĠ Ġo val Scale X . value , ĊĠĠĠ Ġo val Scale Y . value ĊĠ Ġ) ĊĠ ĠO val ( ĊĠĠĠ Ġsecond O val X . value , ĊĠĠĠ Ġsecond O val Y . value , ĊĠĠĠ Ġcorner Radius X . value , ĊĠĠĠ Ġcorner Radius Y . value , ĊĠĠĠ Ġblue Color , ĊĠĠĠ Ġtrue , ĊĠĠĠĠ 1 8 f , ĊĠĠĠ Ġo val Scale X . value , ĊĠĠĠ Ġo val Scale Y . value ĊĠ Ġ) Ċ } Ċ Ċ private Ġsuspend Ġfun Ġfirst Frame First Job ( ĊĠ Ġwidth PX : ĠFloat , ĊĠ Ġo val Size Px : ĠFloat , ĊĠ Ġanimation Scope : ĠCor outine Scope , ĊĠ Ġfirst O val X : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġsecond O val X : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġo val Scale X : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġo val Scale Y : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġcorner Radius X : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġcorner Radius Y : ĠAnim atable < Float , ĠAnimation Vector 1 D >, Ċ ) Ġ{ ĊĠ Ġval Ġfirst O val When Center Ġ= Ġ( width PX Ġ/ Ġ 2 ). minus ( oval Size Px ) ĊĠ Ġval Ġsecond O val When Center Ġ= Ġwidth PX . minus (( width PX Ġ/ Ġ 2 )). plus ( oval Size Px . div ( 2 )) ĊĊĠ Ġval Ġfirst Frame Job 1 Ġ= Ġanimation Scope . launch Ġ{ ĊĠĠĠ Ġ// Ġbring Ġfirst Ġo val Ġto Ġcenter ĊĠĠĠ Ġfirst O val X . animate To ( ĊĠĠĠĠĠ Ġfirst O val When Center , ĊĠĠĠĠĠ Ġt ween ( duration Millis Ġ= Ġ 1 0 0 0 , Ġeasing Ġ= ĠFast Out Linear In E asing ) ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĠ Ġval Ġfirst Frame Job 2 Ġ= Ġanimation Scope . launch Ġ{ ĊĠĠĠ Ġ// Ġbring Ġfirst Ġo val Ġto Ġcenter ĊĠĠĠ Ġsecond O val X . animate To ( ĊĠĠĠĠĠ Ġsecond O val When Center , ĊĠĠĠĠĠ Ġt ween ( duration Millis Ġ= Ġ 1 0 0 0 , Ġeasing Ġ= ĠFast Out Linear In E asing ) ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĠ Ġval Ġfirst Frame Job 3 Ġ= Ġanimation Scope . launch Ġ{ ĊĠĠĠ Ġ// Ġmake Ġthese Ġo vals Ġas Ġcircle ĊĠĠĠ Ġo val Scale X . animate To ( oval Size Px , Ġt ween ( duration Millis Ġ= Ġ 1 0 0 0 , Ġeasing Ġ= ĠFast Out Linear In E asing )) ĊĠ Ġ} ĊĠ Ġval Ġfirst Frame Job 4 Ġ= Ġanimation Scope . launch Ġ{ ĊĠĠĠ Ġ// Ġmake Ġthese Ġo vals Ġas Ġcircle ĊĠĠĠ Ġo val Scale Y . animate To ( oval Size Px , Ġt ween ( duration Millis Ġ= Ġ 1 0 0 0 , Ġeasing Ġ= ĠFast Out Linear In E asing )) ĊĠ Ġ} ĊĊĠ Ġval Ġcorner Radius X Job Ġ= Ġanimation Scope . launch Ġ{ ĊĠĠĠ Ġ// Ġmake Ġthese Ġo vals Ġas Ġcircle ĊĠĠĠ Ġcorner Radius X . animate To ( 4 0 0 f , Ġt ween ( duration Millis Ġ= Ġ 8 0 0 , Ġeasing Ġ= ĠFast Out Linear In E asing )) ĊĠ Ġ} ĊĠ Ġval Ġcorner Radius Y Job Ġ= Ġanimation Scope . launch Ġ{ ĊĠĠĠ Ġ// Ġmake Ġthese Ġo vals Ġas Ġcircle ĊĠĠĠ Ġcorner Radius Y . animate To ( 4 0 0 f , Ġt ween ( duration Millis Ġ= Ġ 8 0 0 , Ġeasing Ġ= ĠFast Out Linear In E asing )) ĊĠ Ġ} ĊĊĠ Ġjoin All ( ĊĠĠĠ Ġfirst Frame Job 1 , ĊĠĠĠ Ġfirst Frame Job 2 , ĊĠĠĠ Ġfirst Frame Job 3 , ĊĠĠĠ Ġfirst Frame Job 4 , ĊĠĠĠ Ġcorner Radius X Job , ĊĠĠĠ Ġcorner Radius Y Job ĊĠ Ġ) Ċ } Ċ Ċ private Ġsuspend Ġfun Ġfirst Frame Second Job ( ĊĠ Ġanimation Scope : ĠCor outine Scope , ĊĠ Ġfirst O val X : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġo val Size Px : ĠFloat , ĊĠ Ġsecond O val X : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġwidth PX : ĠFloat , ĊĠ Ġo val Scale X : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġo val Scale Y : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġcorner Radius X : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġcorner Radius Y : ĠAnim atable < Float , ĠAnimation Vector 1 D >, ĊĠ Ġabout To Finish : Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĠ Ġanimation Scope . launch Ġ{ ĊĠĠĠ Ġdelay ( 8 0 0 ) ĊĠĠĠ Ġabout To Finish . invoke () ĊĠ Ġ} ĊĠ Ġval Ġsecond Frame Job 1 Ġ= Ġanimation Scope . launch Ġ{ ĊĠĠĠ Ġ// Ġbring Ġfirst Ġo val Ġto Ġcenter ĊĠĠĠ Ġfirst O val X . animate To ( ĊĠĠĠĠĠĠ 0 f . minus ( oval Size Px . times ( 2 )), ĊĠĠĠĠĠ Ġt ween ( duration Millis Ġ= Ġ 1 0 0 0 , Ġeasing Ġ= ĠFast Out Linear In E asing ) ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĠ Ġval Ġsecond Frame Job 2 Ġ= Ġanimation Scope . launch Ġ{ ĊĠĠĠ Ġ// Ġbring Ġfirst Ġo val Ġto Ġcenter ĊĠĠĠ Ġsecond O val X . animate To ( ĊĠĠĠĠĠ Ġwidth PX . plus ( oval Size Px . times ( 2 )), ĊĠĠĠĠĠ Ġt ween ( duration Millis Ġ= Ġ 1 0 0 0 , Ġeasing Ġ= ĠFast Out Linear In E asing ) ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĠ Ġval Ġsecond Frame Job 3 Ġ= Ġanimation Scope . launch Ġ{ ĊĠĠĠ Ġ// Ġmake Ġthese Ġo vals Ġas Ġcircle ĊĠĠĠ Ġo val Scale X . animate To ( ĊĠĠĠĠĠ Ġo val Size Px . times ( 2 ), ĊĠĠĠĠĠ Ġt ween ( duration Millis Ġ= Ġ 8 0 0 , Ġeasing Ġ= ĠFast Out Linear In E asing ) ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĠ Ġval Ġsecond Frame Job 4 Ġ= Ġanimation Scope . launch Ġ{ ĊĠĠĠ Ġ// Ġmake Ġthese Ġo vals Ġas Ġcircle ĊĠĠĠ Ġo val Scale Y . animate To ( oval Size Px , Ġt ween ( duration Millis Ġ= Ġ 8 0 0 , Ġeasing Ġ= ĠFast Out Linear In E asing )) ĊĠ Ġ} ĊĊĠ Ġval Ġcorner Radius X Job Ġ= Ġanimation Scope . launch Ġ{ ĊĠĠĠ Ġ// Ġmake Ġthese Ġo vals Ġas Ġcircle ĊĠĠĠ Ġcorner Radius X . animate To ( 4 0 0 f , Ġt ween ( duration Millis Ġ= Ġ 8 0 0 , Ġeasing Ġ= ĠFast Out Linear In E asing )) ĊĠ Ġ} ĊĠ Ġval Ġcorner Radius Y Job Ġ= Ġanimation Scope . launch Ġ{ ĊĠĠĠ Ġ// Ġmake Ġthese Ġo vals Ġas Ġcircle ĊĠĠĠ Ġcorner Radius Y . animate To ( 3 6 0 f , Ġt ween ( duration Millis Ġ= Ġ 8 0 0 , Ġeasing Ġ= ĠFast Out Linear In E asing )) ĊĠ Ġ} ĊĊĠ Ġjoin All ( ĊĠĠĠ Ġsecond Frame Job 1 , ĊĠĠĠ Ġsecond Frame Job 2 , ĊĠĠĠ Ġsecond Frame Job 3 , ĊĠĠĠ Ġsecond Frame Job 4 , ĊĠĠĠ Ġcorner Radius X Job , ĊĠĠĠ Ġcorner Radius Y Job ĊĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠO val ( ĊĠ Ġx Value : ĠFloat , ĊĠ Ġy Value : ĠFloat , ĊĠ Ġcorner Radius X : ĠFloat , ĊĠ Ġcorner Radius Y : ĠFloat , ĊĠ ĠbackgroundColor : ĠColor , ĊĠ Ġis Border : ĠBoolean , ĊĠ Ġborder Stroke : ĠFloat , ĊĠ Ġscale X : ĠFloat , ĊĠ Ġscale Y : ĠFloat Ċ ) Ġ{ ĊĊĠ Ġval Ġwidth Ġ= Ġwith ( Local Density . current ) Ġ{ ĊĠĠĠ Ġscale X . to Dp () ĊĠ Ġ} ĊĊĠ Ġval Ġheight Ġ= Ġwith ( Local Density . current ) Ġ{ ĊĠĠĠ Ġscale Y . to Dp () ĊĠ Ġ} ĊĊĊĠ ĠCanvas ( modifier Ġ= ĠModifier ĊĠĠĠ Ġ. width ( width ) ĊĠĠĠ Ġ. height ( height ) ĊĠĠĠ Ġ. offset Ġ{ ĠInt Offset ( x Value . toInt (), Ġy Value . toInt ()) Ġ}, Ġon Draw Ġ= Ġ{ ĊĠĠĠ Ġdraw Round Rect ( ĊĠĠĠĠĠ ĠbackgroundColor , ĊĠĠĠĠĠ Ġcorner Radius Ġ= ĠCor ner Radius ( corner Radius X , Ġcorner Radius Y ), ĊĠĠĠĠĠ Ġstyle Ġ= Ġif Ġ( is Border ) ĠSt roke ( border Stroke ) Ġelse ĠFill , ĊĠĠĠ Ġ) ĊĠ Ġ}) Ċ } Ċ