/* Ċ Ġ* Ġ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 . Bundle Ċ import Ġandroidx . activity . compose . setContent Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . compose . animation . Animated Visibility Ċ import Ġandroidx . compose . animation . Experimental Animation Api Ċ import Ġandroidx . compose . animation . animate Color Ċ import Ġandroidx . compose . animation . core . Linear E asing Ċ import Ġandroidx . compose . animation . core . Repeat Mode Ċ 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 . animation . expand Vert ically Ċ import Ġandroidx . compose . animation . fadeIn Ċ import Ġandroidx . compose . animation . fadeOut Ċ import Ġandroidx . compose . animation . shrink Vert ically Ċ import Ġandroidx . compose . animation . slide In Vert ically Ċ import Ġandroidx . compose . animation . slide Out Vert ically Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . fill Max Height Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . text . Keyboard Options Ċ import Ġandroidx . compose . material . Button Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Outlined TextField Ċ import Ġandroidx . compose . material . Surface Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . Mutable State Ċ 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 Ċ import Ġandroidx . compose . ui . text . TextStyle Ċ import Ġandroidx . compose . ui . text . font . Font Weight Ċ import Ġandroidx . compose . ui . text . input . Keyboard Type Ċ import Ġandroidx . compose . ui . text . input . TextField Value Ċ 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 . util . Date Ċ import Ġjava . util . Timer Ċ import Ġjava . util . Timer Task Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġ@ Experimental Animation Api ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Content Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHello Input () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Experimental Animation Api Ċ @ Composable Ċ fun ĠHello Input () Ġ{ ĊĠĠĠ ĠColumn Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġis Start Ġby Ġremember Ġ{ Ġmutable State Of ( true ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtext State Ġ= Ġremember Ġ{ Ġmutable State Of ( TextField Value ( text Ġ= Ġ" 8 ")) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdefault Modifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 1 6 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĊĠĠĠĠĠĠĠ ĠOut lined TextField ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġtext State . value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext State . value Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġdefault Modifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Style Ġ= ĠMaterial Theme . typography . h 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Ġ= Ġis Start , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeyboard Options Ġ= ĠKeyboard Options ( keyboard Type Ġ= ĠKeyboard Type . Number ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠButton ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= ĠMy Timer Task ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext State . value . text . toInt (), Ġtext State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Fun Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Start Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTimer (). schedule ( task , ĠDate (), Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Start Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġdefault Modifier , Ġenabled Ġ= Ġis Start ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" å¼Ģå§ĭ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠAnimated Visibility ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisible Ġ= Ġ! is Start , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenter Ġ= Ġslide In Vert ically ( initial Offset Y Ġ= Ġ{ Ġ- 4 0 Ġ}) Ġ+ Ġexpand Vert ically ( expand From Ġ= ĠAlignment . Top ) Ġ+ ĠfadeIn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Alpha Ġ= Ġ 0 . 3 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexit Ġ= Ġslide Out Vert ically () Ġ+ Ġshrink Vert ically () Ġ+ Ġfade Out () ĊĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( modifier Ġ= Ġdefault Modifier , Ġtext Ġ= Ġ" å¼Ģå§ĭ åĢĴ è®¡ æĹ¶ åķ ¦ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġinfinite Transition Ġ= Ġremember Infinite Transition () ĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġby Ġinfinite Transition . animate Color ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Value Ġ= ĠColor . Red , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Value Ġ= ĠColor . Green , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġinfinite Repeat able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Ġ= Ġt ween ( 1 0 0 0 , Ġeasing Ġ= ĠLinear E asing ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat Mode Ġ= ĠRepeat Mode . Reverse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġinfinite Transition 2 Ġ= Ġremember Infinite Transition () ĊĠĠĠĠĠĠĠ Ġval Ġcolor 2 Ġby Ġinfinite Transition 2 . animate Color ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Value Ġ= ĠColor . Yellow , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Value Ġ= ĠColor . Gray , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġinfinite Repeat able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Ġ= Ġt ween ( 1 0 0 0 , Ġeasing Ġ= ĠLinear E asing ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat Mode Ġ= ĠRepeat Mode . Reverse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill MaxSize () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Height () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( color ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Alignment Ġ= ĠAlignment . Center , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġcolor 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġtext State . value . text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠTextStyle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġ 7 0 . sp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Bold , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠMy Timer Task ( ĊĠĠĠ Ġprivate Ġvar Ġtime : ĠInt , ĊĠĠĠ Ġprivate Ġvar Ġtext State : ĠMutable State < TextField Value >, ĊĠĠĠ Ġprivate Ġvar Ġstart Fun : Ġ( b : ĠBoolean ) Ġ-> ĠUnit Ċ ) Ġ: ĊĠĠĠ ĠTimer Task () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( time Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Fun ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtime -- ĊĠĠĠĠĠĠĠ Ġtext State . value Ġ= ĠText FieldValue ( text Ġ= Ġtime . toString ()) ĊĠĠĠĠĠĠĠ Ġprintln ( time ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠStart Ġbuilding Ġyour Ġapp Ġhere ! Ċ @ Composable Ċ fun ĠMy App () Ġ{ ĊĠĠĠ ĠSurface ( color Ġ= ĠMaterial Theme . colors . background ) Ġ{ ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" Ready ... ĠSet ... ĠGO !") ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Experimental Animation Api Ċ @ Preview (" Light ĠTheme ", Ġwidth Dp Ġ= Ġ 3 6 0 , Ġheight Dp Ġ= Ġ 6 4 0 ) Ċ @ Composable Ċ fun ĠLight Preview () Ġ{ ĊĠĠĠ ĠMy Theme Ġ{ ĊĠĠĠĠĠĠĠ ĠHello Input () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Experimental Animation Api Ċ @ Preview (" Dark ĠTheme ", Ġwidth Dp Ġ= Ġ 3 6 0 , Ġheight Dp Ġ= Ġ 6 4 0 ) Ċ @ Composable Ċ fun ĠDark Preview () Ġ{ ĊĠĠĠ ĠMy Theme ( dark Theme Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ ĠHello Input () ĊĠĠĠ Ġ} Ċ } Ċ