/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 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 . Ċ Ġ*/ Ċ Ċ package Ġcom . example . android . compose . motion . demo . shared axis Ċ Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . compose . animation . Animated Content Ċ import Ġandroidx . compose . animation . Animated Visibility Scope Ċ import Ġandroidx . compose . animation . Content Transform Ċ import Ġandroidx . compose . animation . Experimental Animation Api Ċ import Ġandroidx . compose . animation . animate Color Ċ import Ġandroidx . compose . animation . core . Fast Out Linear In E asing Ċ import Ġandroidx . compose . animation . core . Finite Animation Spec Ċ import Ġandroidx . compose . animation . core . Linear Out Slow In E asing Ċ import Ġandroidx . compose . animation . core . t ween Ċ import Ġandroidx . compose . animation . core . update Transition Ċ import Ġandroidx . compose . animation . fadeIn Ċ import Ġandroidx . compose . animation . fadeOut Ċ import Ġandroidx . compose . animation . slide In Vert ically Ċ import Ġandroidx . compose . animation . slide Out Vert ically Ċ import Ġandroidx . compose . foundation . Image Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . layout . Arrange ment Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . aspect Ratio Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . layout . size Ċ import Ġandroidx . compose . foundation . layout . wrap Content Size Ċ import Ġandroidx . compose . foundation . remember Scroll State Ċ import Ġandroidx . compose . foundation . shape . Circle Shape Ċ import Ġandroidx . compose . foundation . shape . Rounded Corner Shape Ċ import Ġandroidx . compose . foundation . vertical Scroll Ċ import Ġandroidx . compose . material 3 . IconButton Ċ import Ġandroidx . compose . material 3 . Material Theme Ċ import Ġandroidx . compose . material 3 . 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 . save able . remember Save able Ċ 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 . layout . Content Scale Ċ import Ġandroidx . compose . ui . platform . Local Density Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġandroidx . compose . ui . text . font . Font Weight Ċ import Ġandroidx . compose . ui . text . style . Text Align Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . compose . ui . tool ing . preview . datasource . Lorem Ip sum Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . ui . unit . sp Ċ import Ġcom . example . android . compose . motion . demo . Che ese Images Ċ import Ġcom . example . android . compose . motion . demo . Che ese Names Ċ import Ġcom . example . android . compose . motion . demo . Demo Ċ import Ġcom . example . android . compose . motion . demo . Simple Sca ffold Ċ import Ġcom . example . android . compose . motion . ui . Motion Compose Theme Ċ import Ġcom . google . ac comp an ist . in sets . Local Window Insets Ċ import Ġcom . google . ac comp an ist . in sets . remember Insets Padding Values Ċ Ċ @ Composable Ċ fun ĠShared Axis Demo () Ġ{ ĊĠĠĠ ĠSimple Sca ffold ( title Ġ= ĠDemo . Shared Axis . title ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpages Ġ= Ġremember Ġ{ Ġcreate Pages () Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠIndicator Ġcolumn ĊĠĠĠĠĠĠĠ Ġvar Ġid Ġby Ġremember Save able Ġ{ Ġmutable State Of ( 1 ) Ġ} ĊĠĠĠĠĠĠĠ ĠRow ( modifier Ġ= ĠModifier . padding ( end Ġ= Ġ 1 6 . dp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPage Indicators Column ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpages Ġ= Ġpages , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Id Ġ= Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Indicator Click Ġ= Ġ{ Ġid Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShared Y Axis Ġanim ates Ġthe Ġcontent Ġchange . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShared Y Axis ( target State Ġ= Ġpages . first Ġ{ Ġit . id Ġ== Ġid Ġ}) Ġ{ Ġpage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPage Content ( page Ġ= Ġpage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠAnim ates Ġcontent Ġchange Ġwith Ġthe Ġvertical Ġshared Ġaxis Ġpattern . Ċ Ġ* Ċ Ġ* ĠSee Ġ[ Shared Ġaxis ]( https :// material . io / design / motion / the - motion - system . html # shared - axis ) Ġfor Ġthe Ċ Ġ* Ġdetail Ġabout Ġthis Ġmotion Ġpattern . Ċ Ġ*/ Ċ @ Opt In ( Experimental Animation Api :: class ) Ċ @ Composable Ċ private Ġfun Ġ< T Ġ: ĠComparable < T >> ĠShared Y Axis ( ĊĠĠĠ Ġtarget State : ĠT , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġcontent : Ġ@ Composable ĠAnimated Visibility Scope .( T ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġval Ġexit Duration Millis Ġ= Ġ 8 0 ĊĠĠĠ Ġval Ġenter Duration Millis Ġ= Ġ 2 2 0 ĊĊĠĠĠ Ġ// ĠThis Ġlocal Ġfunction Ġcreates Ġthe ĠAnimation Spec Ġfor Ġoutgoing Ġelements . ĊĠĠĠ Ġfun Ġ< T > Ġexit Spec (): ĠFin ite Animation Spec < T > Ġ= ĊĠĠĠĠĠĠĠ Ġt ween ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Millis Ġ= Ġexit Duration Millis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeasing Ġ= ĠFast Out Linear In E asing ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ// ĠThis Ġlocal Ġfunction Ġcreates Ġthe ĠAnimation Spec Ġfor Ġincoming Ġelements . ĊĠĠĠ Ġfun Ġ< T > Ġenter Spec (): ĠFin ite Animation Spec < T > Ġ= ĊĠĠĠĠĠĠĠ Ġt ween ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġenter Ġanimation Ġruns Ġright Ġafter Ġthe Ġexit Ġanimation . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay Millis Ġ= Ġexit Duration Millis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Millis Ġ= Ġenter Duration Millis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeasing Ġ= ĠLinear Out Slow In E asing ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġslide Distance Ġ= Ġwith ( Local Density . current ) Ġ{ Ġ 3 0 . dp . round To Px () Ġ} ĊĊĠĠĠ ĠAnimated Content ( ĊĠĠĠĠĠĠĠ Ġtarget State Ġ= Ġtarget State , ĊĠĠĠĠĠĠĠ Ġtransition Spec Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġstate Ġtype Ġ(< T >) Ġis ĠComparable . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġcompare Ġthe Ġinitial Ġstate Ġand Ġthe Ġtarget Ġstate Ġto Ġdetermine Ġwhether Ġwe Ġare Ġmoving ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdown Ġor Ġup . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( initialState Ġ< Ġtarget State ) Ġ{ Ġ// ĠMove Ġdown ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContent Transform ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOut going Ġelements Ġfade Ġout Ġand Ġslide Ġup Ġto Ġthe Ġtop . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Content Exit Ġ= Ġfade Out ( exit Spec ()) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġslide Out Vert ically ( exit Spec ()) Ġ{ Ġ- slide Distance Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIncoming Ġelements Ġfade Ġin Ġand Ġslide Ġup Ġfrom Ġthe Ġbottom . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Content Enter Ġ= ĠfadeIn ( enter Spec ()) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġslide In Vert ically ( enter Spec ()) Ġ{ Ġslide Distance Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġ// ĠMove Ġup ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContent Transform ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOut going Ġelements Ġfade Ġout Ġand Ġslide Ġdown Ġto Ġthe Ġbottom . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Content Exit Ġ= Ġfade Out ( exit Spec ()) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġslide Out Vert ically ( exit Spec ()) Ġ{ Ġslide Distance Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOut going Ġelements Ġfade Ġin Ġand Ġslide Ġdown Ġfrom Ġthe Ġtop . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Content Enter Ġ= ĠfadeIn ( enter Spec ()) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġslide In Vert ically ( enter Spec ()) Ġ{ Ġ- slide Distance Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠ Ġcontent Ġ= Ġcontent ĊĠĠĠ Ġ) Ċ } Ċ Ċ private Ġclass ĠPage ( ĊĠĠĠ Ġval Ġid : ĠInt , ĊĠĠĠ Ġ@ Drawable Res ĊĠĠĠ Ġval Ġimage : ĠInt , ĊĠĠĠ Ġval Ġtitle : ĠString , ĊĠĠĠ Ġval Ġbody : ĠString Ċ ) Ġ: ĠComparable < Page > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠPage ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġid . compareTo ( other . id ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġcreate Pages (): ĠList < Page > Ġ{ ĊĠĠĠ Ġval Ġbody Ġ= ĠLorem Ip sum (). values . join ToString ( separator Ġ= Ġ" Ġ"). replace ('\ n ', Ġ' Ġ') ĊĠĠĠ Ġreturn Ġ( 0 .. 4 ). map Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠ ĠPage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġi Ġ+ Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Ġ= ĠChe ese Images [ i Ġ% ĠChe ese Images . size ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠChe ese Names [ i Ġ* Ġ 1 2 8 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġbody ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠPage Indicators Column ( ĊĠĠĠ Ġpages : ĠList < Page >, ĊĠĠĠ Ġselected Id : ĠInt , ĊĠĠĠ Ġon Indicator Click : Ġ( index : ĠInt ) Ġ-> ĠUnit , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier Ċ ) Ġ{ ĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. vertical Scroll ( remember Scroll State ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 1 6 . dp ), ĊĠĠĠĠĠĠĠ Ġhorizontal Alignment Ġ= ĠAlignment . Center H orizontally , ĊĠĠĠĠĠĠĠ Ġvertical Arrange ment Ġ= ĠArrange ment . spaced By ( 3 2 . dp ), ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( page Ġin Ġpages ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPage Indicator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġpage . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġselected Id Ġ== Ġpage . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġon Indicator Click ( page . id ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠPage Indicator ( ĊĠĠĠ Ġindex : ĠInt , ĊĠĠĠ Ġselected : ĠBoolean , ĊĠĠĠ ĠonClick : Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġval Ġtransition Ġ= Ġupdate Transition ( target State Ġ= Ġselected , Ġlabel Ġ= Ġ" indicator ") ĊĠĠĠ Ġval ĠbackgroundColor Ġby Ġtransition . animate Color ( label Ġ= Ġ" background Ġcolor ") Ġ{ Ġtarget Selected Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( target Selected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial Theme . color Scheme . primary ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial Theme . color Scheme . surface Variant ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval ĠtextColor Ġby Ġtransition . animate Color ( label Ġ= Ġ" text Ġcolor ") Ġ{ Ġtarget Selected Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( target Selected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial Theme . color Scheme . on Primary ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial Theme . color Scheme . on Surface Variant ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠIcon Button ( onClick Ġ= ĠonClick ) Ġ{ ĊĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġindex . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ( 3 2 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( backgroundColor , ĠCircle Shape ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. wrap Content Size (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠtextColor , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġ 2 0 . sp , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Bold ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠPage Content ( ĊĠĠĠ Ġpage : ĠPage , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier Ċ ) Ġ{ ĊĠĠĠ Ġval Ġsystem Bars Ġ= ĠLocal Window Insets . current . system Bars ĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. vertical Scroll ( remember Scroll State ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremember Insets Padding Values ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin sets Ġ= Ġsystem Bars , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Start Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Top Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadditional Bottom Ġ= Ġ 1 6 . dp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġvertical Arrange ment Ġ= ĠArrange ment . spaced By ( 1 6 . dp ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġpainter Resource ( page . image ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. aspect Ratio ( 1 6 f Ġ/ Ġ 9 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. clip ( Rounded Corner Shape ( 1 6 . dp )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Scale Ġ= ĠContent Scale . Crop ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġpage . title , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . title Large ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġpage . body , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextAlign Ġ= ĠText Align . Just ify ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview ( show Background Ġ= Ġtrue ) Ċ @ Composable Ċ private Ġfun ĠPreview Shared Axis Demo () Ġ{ ĊĠĠĠ ĠMotion Compose Theme Ġ{ ĊĠĠĠĠĠĠĠ ĠShared Axis Demo () ĊĠĠĠ Ġ} Ċ } Ċ