/* Ċ Ġ* Ġ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 Ċ Ċ import Ġandroid . os . Count Down Timer Ċ import Ġandroidx . compose . foundation . Image Ċ import Ġandroidx . compose . foundation . layout . Arrange ment Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . Spacer Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . height Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . layout . width Ċ import Ġandroidx . compose . foundation . layout . wrap Content Width Ċ import Ġandroidx . compose . foundation . shape . Rounded Corner Shape Ċ import Ġandroidx . compose . material . Button Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Surface Ċ 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 . draw . clip Ċ import Ġandroidx . compose . ui . draw . clip To Bounds Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . p ainter . Painter Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġandroidx . compose . ui . text . font . Font Weight Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . ui . unit . sp Ċ import Ġcom . example . android dev challenge . ui . theme . My Theme Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util . Date Ċ import Ġjava . util . TimeZone Ċ Ċ @ Composable Ċ fun ĠHome Screen () Ġ{ ĊĠĠĠ Ġvar Ġt Ġby Ġremember Ġ{ Ġmutable State Of ( 0 L ) Ġ} ĊĠĠĠ Ġval Ġtimer Ġ= Ġobject Ġ: ĠCount Down Timer ( 2 Ġ* Ġ 6 0 Ġ* Ġ 6 0 Ġ* Ġ 1 0 0 0 , Ġ 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tick ( millis Until Finished : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt Ġ= Ġmillis Until Finished ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Finish () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 1 6 . dp ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠColumn Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText (" The ĠCount down ", ĠfontWeight Ġ= ĠFontWeight . Bold , ĠfontSize Ġ= Ġ 2 5 . sp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroidx . compose . foundation . layout . Spacer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġandroidx . compose . ui . Modifier . height ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 0 . dp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSurface ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. clip ( Rounded Corner Shape ( 5 . dp )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. clip To Bounds (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠMaterial Theme . colors . primary ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTime Screen ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . height ( 2 0 . dp )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAction Screen ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Reset Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonStart Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval Ġformat Ġ= ĠSimpleDateFormat (" HH mm ss ") Ċ Ċ @ Composable Ċ fun ĠTime Screen ( t : ĠLong ) Ġ{ ĊĠĠĠ Ġformat . time Zone Ġ= ĠTime Zone . getTime Zone (" GMT ") ĊĠĠĠ Ġval Ġdate Ġ= Ġformat . format ( Date ( t )) ĊĠĠĠ Ġval Ġzero Pic Ġ= Ġget Timer Pic ( num Ġ= Ġdate [ 5 ]. toInt () Ġ- Ġ 4 8 ) ĊĠĠĠ Ġval Ġone Pic Ġ= Ġget Timer Pic ( num Ġ= Ġdate [ 4 ]. toInt () Ġ- Ġ 4 8 ) ĊĠĠĠ Ġval Ġtwo Pic Ġ= Ġget Timer Pic ( num Ġ= Ġdate [ 3 ]. toInt () Ġ- Ġ 4 8 ) ĊĠĠĠ Ġval Ġthree Pic Ġ= Ġget Timer Pic ( num Ġ= Ġdate [ 2 ]. toInt () Ġ- Ġ 4 8 ) ĊĠĠĠ Ġval Ġfour Pic Ġ= Ġget Timer Pic ( num Ġ= Ġdate [ 1 ]. toInt () Ġ- Ġ 4 8 ) ĊĠĠĠ Ġval Ġfive Pic Ġ= Ġget Timer Pic ( num Ġ= Ġdate [ 0 ]. toInt () Ġ- Ġ 4 8 ) ĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( 1 0 . dp ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġfive Pic , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 f ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġfour Pic , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 f ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" :", ĠfontWeight Ġ= ĠFontWeight . Bold , ĠfontSize Ġ= Ġ 3 0 . sp , Ġcolor Ġ= ĠColor . Black ) ĊĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġthree Pic , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 f ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġtwo Pic , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 f ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" :", ĠfontWeight Ġ= ĠFontWeight . Bold , ĠfontSize Ġ= Ġ 3 0 . sp , Ġcolor Ġ= ĠColor . Black ) ĊĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġone Pic , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 f ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġzero Pic , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 f ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun Ġget Timer Pic ( num : ĠInt ): ĠP ainter Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( num ) Ġ{ ĊĠĠĠĠĠĠĠĠ 0 Ġ-> Ġpainter Resource ( id Ġ= ĠR . drawable . num 0 ) ĊĠĠĠĠĠĠĠĠ 1 Ġ-> Ġpainter Resource ( id Ġ= ĠR . drawable . num 1 ) ĊĠĠĠĠĠĠĠĠ 2 Ġ-> Ġpainter Resource ( id Ġ= ĠR . drawable . num 2 ) ĊĠĠĠĠĠĠĠĠ 3 Ġ-> Ġpainter Resource ( id Ġ= ĠR . drawable . num 3 ) ĊĠĠĠĠĠĠĠĠ 4 Ġ-> Ġpainter Resource ( id Ġ= ĠR . drawable . num 4 ) ĊĠĠĠĠĠĠĠĠ 5 Ġ-> Ġpainter Resource ( id Ġ= ĠR . drawable . num 5 ) ĊĠĠĠĠĠĠĠĠ 6 Ġ-> Ġpainter Resource ( id Ġ= ĠR . drawable . num 6 ) ĊĠĠĠĠĠĠĠĠ 7 Ġ-> Ġpainter Resource ( id Ġ= ĠR . drawable . num 7 ) ĊĠĠĠĠĠĠĠĠ 8 Ġ-> Ġpainter Resource ( id Ġ= ĠR . drawable . num 8 ) ĊĠĠĠĠĠĠĠĠ 9 Ġ-> Ġpainter Resource ( id Ġ= ĠR . drawable . num 9 ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġpainter Resource ( id Ġ= ĠR . drawable . num 0 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠAction Screen ( on Reset : Ġ() Ġ-> ĠUnit , ĠonStart : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ ĠRow ( horizontal Arrange ment Ġ= ĠArrange ment . Center , Ġmodifier Ġ= ĠModifier . fill Max Width ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠButton ( onClick Ġ= Ġ{ Ġon Reset () Ġ}, Ġmodifier Ġ= ĠModifier . wrap Content Width ( Alignment . Start )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" RESET ", ĠfontWeight Ġ= ĠFontWeight . Bold , ĠfontSize Ġ= Ġ 2 0 . sp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . width ( 2 0 . dp )) ĊĠĠĠĠĠĠĠ ĠButton ( onClick Ġ= Ġ{ ĠonStart () Ġ}, Ġmodifier Ġ= ĠModifier . wrap Content Width ( Alignment . End )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" START ", ĠfontWeight Ġ= ĠFontWeight . Bold , ĠfontSize Ġ= Ġ 2 0 . sp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview Ċ @ Composable Ċ fun Ġpreview Home Screen () Ġ{ ĊĠĠĠ ĠMy Theme ( false ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTime Screen ( 0 ) ĊĠĠĠ Ġ} Ċ } Ċ