/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// 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 Ġcom . example . android dev challenge . ui . components Ċ Ċ import Ġandroidx . compose . animation . core . animate Float Ċ import Ġandroidx . compose . animation . core . animate Float As State Ċ import Ġandroidx . compose . animation . core . infinite Repeat able Ċ import Ġandroidx . compose . animation . core . remember Infinite Transition Ċ import Ġandroidx . compose . animation . core . t ween Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . layout . size Ċ import Ġandroidx . compose . foundation . shape . Rounded Corner Shape Ċ import Ġandroidx . compose . material . Card Ċ import Ġandroidx . compose . material . Circular Progress Indicator Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . text . font . Font Weight Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . ui . unit . sp Ċ import Ġcom . example . android dev challenge . ui . Timer State Ċ import Ġcom . example . android dev challenge . ui . theme . digital Ċ Ċ @ Composable Ċ fun ĠTimer View ( timer Option : ĠTimer Option , Ġtimer Value : ĠInt , Ġtimer State : ĠTimer State ) Ġ{ ĊĠĠĠ ĠCard ( ĊĠĠĠĠĠĠĠ Ġelevation Ġ= Ġ 4 . dp , ĊĠĠĠĠĠĠĠ Ġshape Ġ= ĠRo unded Corner Shape ( size Ġ= Ġ 2 4 . dp ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBox ( content Alignment Ġ= ĠAlignment . Center , Ġmodifier Ġ= ĠModifier . padding ( 2 4 . dp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnimated Progress ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer Option Ġ= Ġtimer Option , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer Value Ġ= Ġtimer Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer State Ġ= Ġtimer State ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnimated Timer Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer Value Ġ= Ġtimer Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer State Ġ= Ġtimer State ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠAnimated Progress ( timer Option : ĠTimer Option , Ġtimer Value : ĠInt , Ġtimer State : ĠTimer State ) Ġ{ ĊĠĠĠ Ġval Ġprogress Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( timer State Ġ== ĠTimer State . IDLE ) Ġ 1 f Ġelse Ġtimer Value . toFloat () Ġ/ Ġtimer Option . time ĊĠĠĠ Ġval Ġprogress Val : ĠFloat Ġby Ġanimate Float As State ( ĊĠĠĠĠĠĠĠ Ġtarget Value Ġ= Ġprogress , ĊĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġt ween ( duration Millis Ġ= Ġ 2 0 0 ) ĊĠĠĠ Ġ) ĊĠĠĠ ĠCircular Progress Indicator ( ĊĠĠĠĠĠĠĠ Ġprogress Ġ= Ġprogress Val , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . size ( 2 0 0 . dp ), ĊĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġ 8 . dp ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠAnimated Timer Text ( timer Value : ĠInt , Ġtimer State : ĠTimer State ) Ġ{ ĊĠĠĠ Ġif Ġ( timer State Ġ!= ĠTimer State . START ) Ġ{ ĊĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ"$ timer Value ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . h 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Medium , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfontFamily Ġ= Ġdigital , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġtransition Ġ= Ġremember Infinite Transition () ĊĠĠĠ Ġval Ġanim Spec Ġ= Ġinfinite Repeat able ( animation Ġ= Ġt ween < Float >( duration Millis Ġ= Ġ 9 8 5 )) ĊĠĠĠ Ġval Ġtext Unit : ĠFloat Ġby Ġtransition . animate Float ( ĊĠĠĠĠĠĠĠ Ġinitial Value Ġ= Ġ 0 f , ĊĠĠĠĠĠĠĠ Ġtarget Value Ġ= ĠMaterial Theme . typography . h 1 . fontSize . value , ĊĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġanim Spec ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġ"$ timer Value ", ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . h 1 , ĊĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Medium , ĊĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġtext Unit . sp , ĊĠĠĠĠĠĠĠ ĠfontFamily Ġ= Ġdigital ĊĠĠĠ Ġ) Ċ } Ċ