/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// 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 Ġde . j ens k ling en berg . jet pack compose playground . ui . samples . android x . ui . animation Ċ Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroidx . animation . Float Prop Key Ċ import Ġandroidx . animation . Transition State Ċ import Ġandroidx . animation . transition Definition Ċ import Ġandroidx . compose . Composable Ċ import Ġandroidx . compose . Re compose Ċ import Ġandroidx . ui . animation . Color Prop Key Ċ import Ġandroidx . ui . animation . Transition Ċ import Ġandroidx . ui . core . Draw Ċ import Ġandroidx . ui . core . Layout Ċ import Ġandroidx . ui . core . to Rect Ċ import Ġandroidx . ui . engine . geometry . Rect Ċ import Ġandroidx . ui . graphics . Color Ċ import Ġandroidx . ui . graphics . Paint ĊĊ Ċ @ Composable Ċ fun ĠHello Animation Demo () Ġ{ ĊĠĠĠ ĠLayout ( children Ġ= Ġ{ ĠColor Rect () Ġ}) Ġ{ Ġ_, Ġconstraints Ġ-> ĊĠĠĠĠĠĠĠ Ġlayout ( constraints . maxWidth , Ġconstraints . max Height ) Ġ{} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval Ġbackground Ġ= ĠColor Prop Key () Ċ private Ġval Ġy Ġ= ĠFloat Prop Key () Ċ Ċ private Ġenum Ġclass ĠOverlay State Ġ{ ĊĠĠĠ ĠOpen , ĊĠĠĠ ĠClosed Ċ } Ċ Ċ private Ġval Ġdefinition Ġ= Ġtransition Definition Ġ{ ĊĠĠĠ Ġstate ( Overlay State . Open ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis [ background ] Ġ= ĠColor ( alpha Ġ= Ġ 2 5 5 , Ġred Ġ= Ġ 1 2 8 , Ġgreen Ġ= Ġ 1 2 8 , Ġblue Ġ= Ġ 1 2 8 ) ĊĠĠĠĠĠĠĠ Ġthis [ y ] Ġ= Ġ 1 f Ġ// Ġpercentage ĊĠĠĠ Ġ} ĊĠĠĠ Ġstate ( Overlay State . Closed ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis [ background ] Ġ= ĠColor ( alpha Ġ= Ġ 2 5 5 , Ġred Ġ= Ġ 1 8 8 , Ġgreen Ġ= Ġ 2 2 2 , Ġblue Ġ= Ġ 1 4 5 ) ĊĠĠĠĠĠĠĠ Ġthis [ y ] Ġ= Ġ 0 f Ġ// Ġpercentage ĊĠĠĠ Ġ} Ċ } Ċ Ċ val Ġhandler Ġ= ĠHandler ( Looper . get Main Looper ()) Ċ Ċ @ Composable Ċ fun ĠColor Rect () Ġ{ ĊĠĠĠ Ġvar Ġto State Ġ= ĊĠĠĠĠĠĠĠ ĠOverlay State . Closed ĊĠĠĠ ĠRe compose Ġ{ Ġre compose Ġ-> ĊĠĠĠĠĠĠĠ Ġhandler . post Delayed ( object Ġ: ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( 0 .. 1 ). random () Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto State Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOverlay State . Open ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto State Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOverlay State . Closed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre compose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġ( 2 0 0 .. 8 0 0 ). random (). to Long ()) ĊĠĠĠĠĠĠĠ ĠTransition ( definition Ġ= Ġdefinition , Ġto State Ġ= Ġto State ) Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDraw Color Rect State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠDraw Color Rect State ( state : ĠTransition State ) Ġ{ ĊĊĠĠĠ Ġval Ġcolor Ġ= Ġstate [ background ] ĊĠĠĠ Ġval Ġscale Y Ġ= Ġstate [ y ] ĊĊĠĠĠ ĠDraw Rectangle ( ĊĠĠĠĠĠĠĠ Ġcolor Ġ= Ġcolor ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġpaint Ġ= ĠPaint (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . color Ġ= ĠColor ( alpha Ġ= Ġ 2 5 5 , Ġred Ġ= Ġ 2 5 5 , Ġgreen Ġ= Ġ 2 5 5 , Ġblue Ġ= Ġ 2 5 5 ) ĊĠĠĠ Ġ} ĊĠĠĠ ĠDraw Ġ{ Ġcanvas , Ġpixel Size Ġ-> ĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 f , Ġ 0 f , Ġpixel Size . width . value Ġ- Ġ 1 0 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale Y Ġ* Ġpixel Size . height . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġpaint ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠDraw Rectangle ( color : ĠColor ) Ġ{ ĊĠĠĠ Ġval Ġpaint Ġ= ĠPaint () ĊĠĠĠ Ġpaint . color Ġ= Ġcolor ĊĠĠĠ ĠDraw Ġ{ Ġcanvas , Ġparent Size Ġ-> ĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( parent Size . to Rect (), Ġpaint ) ĊĠĠĠ Ġ} Ċ } Ċ