@@ -35,16 +35,19 @@ import androidx.compose.animation.core.SeekableTransitionState
3535import androidx.compose.animation.core.keyframes
3636import androidx.compose.animation.core.rememberTransition
3737import androidx.compose.animation.core.tween
38+ import androidx.compose.animation.core.updateTransition
3839import androidx.compose.animation.fadeIn
3940import androidx.compose.animation.fadeOut
4041import androidx.compose.animation.slideInVertically
4142import androidx.compose.animation.slideOutVertically
43+ import androidx.compose.animation.togetherWith
4244import androidx.compose.foundation.Image
4345import androidx.compose.foundation.background
4446import androidx.compose.foundation.border
4547import androidx.compose.foundation.clickable
4648import androidx.compose.foundation.horizontalScroll
4749import androidx.compose.foundation.interaction.MutableInteractionSource
50+ import androidx.compose.foundation.layout.Arrangement
4851import androidx.compose.foundation.layout.Box
4952import androidx.compose.foundation.layout.Column
5053import androidx.compose.foundation.layout.Row
@@ -62,13 +65,15 @@ import androidx.compose.material.icons.Icons
6265import androidx.compose.material.icons.outlined.Create
6366import androidx.compose.material.icons.outlined.Favorite
6467import androidx.compose.material.icons.outlined.Share
68+ import androidx.compose.material3.Checkbox
6569import androidx.compose.material3.Icon
6670import androidx.compose.material3.Slider
6771import androidx.compose.material3.Surface
6872import androidx.compose.material3.Text
6973import androidx.compose.runtime.Composable
7074import androidx.compose.runtime.getValue
7175import androidx.compose.runtime.mutableIntStateOf
76+ import androidx.compose.runtime.mutableStateListOf
7277import androidx.compose.runtime.mutableStateOf
7378import androidx.compose.runtime.remember
7479import androidx.compose.runtime.rememberCoroutineScope
@@ -83,6 +88,7 @@ import androidx.compose.ui.res.painterResource
8388import androidx.compose.ui.tooling.preview.Preview
8489import androidx.compose.ui.unit.dp
8590import androidx.compose.ui.unit.sp
91+ import androidx.glance.currentState
8692import androidx.navigation.NavType
8793import androidx.navigation.compose.NavHost
8894import androidx.navigation.compose.composable
@@ -272,10 +278,10 @@ private fun DetailsContent(
272278 // [END android_compose_shared_element_text_bounds_transform]
273279 Text (
274280 " Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " +
275- " Lorem ipsum dolor sit amet, consectetur adipiscing elit." +
276- " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " +
277- " molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " +
278- " hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" ,
281+ " Lorem ipsum dolor sit amet, consectetur adipiscing elit." +
282+ " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " +
283+ " molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " +
284+ " hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" ,
279285 modifier = Modifier .skipToLookaheadSize()
280286 )
281287 }
@@ -332,7 +338,7 @@ private fun SharedElement_Clipping() {
332338 rememberSharedContentState(key = " title" ),
333339 animatedVisibilityScope = this @AnimatedContent,
334340
335- )
341+ )
336342 )
337343 }
338344 } else {
@@ -370,10 +376,10 @@ private fun SharedElement_Clipping() {
370376 )
371377 Text (
372378 " Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " +
373- " Lorem ipsum dolor sit amet, consectetur adipiscing elit." +
374- " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " +
375- " molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " +
376- " hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus"
379+ " Lorem ipsum dolor sit amet, consectetur adipiscing elit." +
380+ " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " +
381+ " molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " +
382+ " hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus"
377383 )
378384 }
379385 }
@@ -730,3 +736,70 @@ fun CustomPredictiveBackHandle() {
730736
731737 // [END android_compose_shared_element_custom_seeking]
732738}
739+
740+ @Composable
741+ @Preview
742+ fun DynamicSharedElements () {
743+ var currentState by remember {
744+ mutableStateOf(" A" )
745+ }
746+ // [START android_compose_shared_element_dynamic_enable_disable]
747+ SharedTransitionLayout {
748+ val transition = updateTransition(currentState)
749+ transition.AnimatedContent { targetState ->
750+ // Create the configuration that depends on state changing.
751+ fun animationConfig () : SharedTransitionScope .SharedContentConfig {
752+ return object : SharedTransitionScope .SharedContentConfig {
753+ override val SharedTransitionScope .SharedContentState .isEnabled: Boolean
754+ // For this example, we only enable the transition in one direction
755+ // from A -> B and not the other way around.
756+ get() =
757+ transition.currentState == " A" && transition.targetState == " B"
758+ }
759+ }
760+ when (targetState) {
761+ " A" -> Box (
762+ modifier = Modifier
763+ .sharedElement(
764+ rememberSharedContentState(
765+ key = " shared_box" ,
766+ config = animationConfig()
767+ ),
768+ animatedVisibilityScope = this
769+ )
770+ // [START_EXCLUDE]
771+ .size(100 .dp)
772+ .background(Color .Red )
773+ .clickable {
774+ currentState = " B"
775+ }
776+ // [END_EXCLUDE]
777+ ) {
778+ // Your content
779+ }
780+ " B" -> {
781+ Box (
782+ modifier = Modifier
783+ .sharedElement(
784+ rememberSharedContentState(
785+ key = " shared_box" ,
786+ config = animationConfig()
787+ ),
788+ animatedVisibilityScope = this
789+ )
790+ // [START_EXCLUDE]
791+ .size(200 .dp)
792+ .background(Color .Blue )
793+ .clickable {
794+ currentState = " A"
795+ }
796+ // [END_EXCLUDE]
797+ ) {
798+ // Your content
799+ }
800+ }
801+ }
802+ }
803+ }
804+ // [END android_compose_shared_element_dynamic_enable_disable]
805+ }
0 commit comments