/* Ċ Ġ* Ġ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 . screen Ċ Ċ import Ġandroidx . compose . animation . Experimental Animation Api Ċ import Ġandroidx . compose . foundation . Image Ċ import Ġandroidx . compose . foundation . click able Ċ import Ġandroidx . compose . foundation . layout . Arrange ment Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . Spacer Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . material . Button Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . runtime . setValue Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Filter Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġcom . example . android dev challenge . R Ċ import Ġcom . example . android dev challenge . ui . Scrolling Animation Ċ Ċ @ Experimental Animation Api Ċ @ Composable Ċ fun ĠCount Down Input ( on Count Down Start Click : Ġ( Long , ĠLong , ĠLong ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġvar Ġnumber Hours : ĠLong Ġby Ġremember Ġ{ Ġmutable State Of ( 0 L ) Ġ} ĊĠĠĠ Ġvar Ġnumber Minutes : ĠLong Ġby Ġremember Ġ{ Ġmutable State Of ( 0 L ) Ġ} ĊĠĠĠ Ġvar Ġnumber Seconds : ĠLong Ġby Ġremember Ġ{ Ġmutable State Of ( 0 L ) Ġ} ĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . Center , ĊĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Ġ= Ġ 2 . dp ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNumber Input ( number Hours ) Ġ{ Ġnumber Hours Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠ ĠNumber Input Sem i Column () ĊĠĠĠĠĠĠĠ ĠNumber Input ( number Minutes ) Ġ{ Ġnumber Minutes Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠ ĠNumber Input Sem i Column () ĊĠĠĠĠĠĠĠ ĠNumber Input ( number Seconds ) Ġ{ Ġnumber Seconds Ġ= Ġit Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠSp acer ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Ġ= Ġ 1 6 . dp ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĠĠĠ ĠButton ( onClick Ġ= Ġ{ Ġon Count Down Start Click ( number Hours , Ġnumber Minutes , Ġnumber Seconds ) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġstring Resource ( R . string . count _ down _ cta )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠNumber Input Sem i Column () Ġ{ ĊĠĠĠ ĠText ( text Ġ= Ġstring Resource ( R . string . semi _ column )) Ċ } Ċ Ċ @ Composable Ċ @ Experimental Animation Api Ċ private Ġfun ĠNumber Input ( number : ĠLong , Ġon ValueChanged : Ġ( Long ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġvar Ġprevious Number : ĠLong ? Ġby Ġremember Ġ{ Ġmutable State Of ( null ) Ġ} ĊĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ Ġhorizontal Alignment Ġ= ĠAlignment . Center H orizontally ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġpainter Resource ( R . drawable . ic _ arrow _ up ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . click able Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Number Ġ= Ġnumber ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon ValueChanged (( number Ġ+ Ġ 1 ) Ġ% Ġ 6 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Filter Ġ= ĠColor Filter . tint ( Material Theme . colors . primary ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠScroll ing Animation ( number , Ġprevious Number ) Ġ{ ĠText For Input ( it ) Ġ} ĊĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġpainter Resource ( R . drawable . ic _ arrow _ down ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . click able Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Number Ġ= Ġnumber ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon ValueChanged ( if Ġ( number Ġ- Ġ 1 Ġ< Ġ 0 ) Ġ 5 9 Ġelse Ġnumber Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Filter Ġ= ĠColor Filter . tint ( Material Theme . colors . primary ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠText For Input ( value : ĠLong ) Ġ= ĊĠĠĠ ĠText ( text Ġ= Ġvalue . toString (). pad Start ( 2 , Ġ' 0 '), Ġstyle Ġ= ĠMaterial Theme . typography . body 1 ) Ċ