/* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġ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 . Ċ Ġ*/ Ċ @ file : Opt In ( Experimental Animation Api :: class ) Ċ Ċ package Ġandroidx . compose . animation . demos Ċ Ċ import Ġandroidx . compose . animation . Animated Content Ċ import Ġandroidx . compose . animation . Animated Content Scope . Slide Direction Ċ import Ġandroidx . compose . animation . Experimental Animation Api Ċ import Ġandroidx . compose . animation . core . t ween Ċ import Ġandroidx . compose . animation . core . update Transition Ċ import Ġandroidx . compose . animation . expand H orizontally Ċ import Ġandroidx . compose . animation . fadeIn Ċ import Ġandroidx . compose . animation . fadeOut Ċ import Ġandroidx . compose . animation . shrink Vert ically Ċ import Ġandroidx . compose . animation . with Ċ import Ġandroidx . compose . foundation . background Ċ 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 MaxSize Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . layout . size Ċ import Ġandroidx . compose . material . Button Ċ 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 . Alignment . Companion . Center Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . unit . dp Ċ Ċ @ Opt In ( Experimental Animation Api :: class ) Ċ @ Composable Ċ fun ĠScreen Transition Demo () Ġ{ ĊĠĠĠ ĠColumn Ġ{ ĊĠĠĠĠĠĠĠ ĠSp acer ( Modifier . size ( 4 0 . dp )) ĊĠĠĠĠĠĠĠ Ġvar Ġtarget Screen Ġby Ġremember Ġ{ Ġmutable State Of ( Test Scre ens . Screen 1 ) Ġ} ĊĠĠĠĠĠĠĠ ĠRow ( Modifier . fill Max Width (), Ġhorizontal Arrange ment Ġ= ĠArrange ment . Space Even ly ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Screen Ġ= Ġwhen Ġ(( target Screen . ordinal Ġ+ Ġ 2 ) Ġ% Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠTest Scre ens . Screen 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> ĠTest Scre ens . Screen 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠTest Scre ens . Screen 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . align ( Alignment . Center Vert ically ). padding ( 1 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Previous Ġscreen ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Screen Ġ= Ġwhen Ġ( target Screen . ordinal Ġ+ Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠTest Scre ens . Screen 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> ĠTest Scre ens . Screen 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠTest Scre ens . Screen 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . align ( Alignment . Center Vert ically ). padding ( 1 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Next Ġscreen ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtransition Ġ= Ġupdate Transition ( target Screen ) ĊĠĠĠĠĠĠĠ Ġtransition . Animated Content ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransition Spec Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Test Scre ens . Screen 1 Ġis Transition ing To ĠTest Scre ens . Screen 2 Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest Scre ens . Screen 2 Ġis Transition ing To ĠTest Scre ens . Screen 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( expand H orizontally ( animation Spec Ġ= Ġt ween ( 5 0 0 )) Ġ+ ĠfadeIn ()). with ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshrink Vert ically ( animation Spec Ġ= Ġt ween ( 5 0 0 )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfade Out ( animation Spec Ġ= Ġt ween ( 5 0 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Test Scre ens . Screen 2 Ġis Transition ing To ĠTest Scre ens . Screen 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġslide Into Container ( tow ards Ġ= ĠSlide Direction . Left ) Ġwith ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġslide OutOf Container ( tow ards Ġ= ĠSlide Direction . Left ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Test Scre ens . Screen 3 Ġis Transition ing To ĠTest Scre ens . Screen 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġslide Into Container ( tow ards Ġ= ĠSlide Direction . Right ) Ġwith ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġslide OutOf Container ( tow ards Ġ= ĠSlide Direction . Right ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfadeIn ( animation Spec Ġ= Ġt ween ( 3 0 0 , Ġ 3 0 0 )) Ġwith ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfade Out ( animation Spec Ġ= Ġt ween ( duration Millis Ġ= Ġ 3 0 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest Scre ens . Screen 1 Ġ-> ĠScreen 1 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest Scre ens . Screen 2 Ġ-> ĠScreen 2 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest Scre ens . Screen 3 Ġ-> ĠScreen 3 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ enum Ġclass ĠTest Scre ens Ġ{ ĊĠĠĠ ĠScreen 1 , ĊĠĠĠ ĠScreen 2 , ĊĠĠĠ ĠScreen 3 Ċ } Ċ Ċ @ Composable Ċ fun ĠScreen 1 () Ġ{ ĊĠĠĠ ĠBox ( modifier Ġ= ĠModifier . fill MaxSize (). padding ( 3 0 . dp ). background ( Color ( 0 xffff 6 f 6 9 ))) Ġ{ ĊĠĠĠĠĠĠĠ ĠText (" Screen Ġ 1 ", Ġmodifier Ġ= ĠModifier . align ( Center )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠScreen 2 () Ġ{ ĊĠĠĠ ĠBox ( modifier Ġ= ĠModifier . fill MaxSize (). padding ( 3 0 . dp ). background ( Color ( 0 xffff cc 5 c ))) Ġ{ ĊĠĠĠĠĠĠĠ ĠText (" Screen Ġ 2 ", Ġmodifier Ġ= ĠModifier . align ( Center )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠScreen 3 () Ġ{ ĊĠĠĠ ĠBox ( modifier Ġ= ĠModifier . fill MaxSize (). padding ( 3 0 . dp ). background ( Color ( 0 xff 2 a 9 d 8 4 ))) Ġ{ ĊĠĠĠĠĠĠĠ ĠText (" Screen Ġ 3 ", Ġmodifier Ġ= ĠModifier . align ( Center )) ĊĠĠĠ Ġ} Ċ } Ċ