这是一个作用域的修饰符
SharedTransitionScope
,您只能在其中定义的作用域内调用作用域修饰符。您需要使用
SharedTransitionLayout
或
SharedTransitionScope
可堆肥物
SharedTransitionLayout {
val sharedTransitionState = rememberSharedContentState("")
AnimatedContent(
targetState = visible
) { target ->
Modifier.sharedBounds(
sharedContentState = sharedTransitionState,
animatedVisibilityScope = this@AnimatedContent
)
}
}
SharedTransitionScope {
AnimatedVisibility(
visible = visible
) {
val sharedTransitionState = rememberSharedContentState("")
Modifier.sharedBounds(
sharedContentState = sharedTransitionState,
animatedVisibilityScope = this@AnimatedVisibility
)
}
}
或直接通过
TransitionScope
如,在TransitionScope修饰符下方的示例中。
@Composable
private fun MainContent(
onShowDetails: () -> Unit,
modifier: Modifier = Modifier,
sharedTransitionScope: SharedTransitionScope,
animatedVisibilityScope: AnimatedVisibilityScope
) {
with(sharedTransitionScope) {
Row(
modifier = Modifier
.padding(8.dp)
.sharedBounds(
rememberSharedContentState(key = "bounds"),
animatedVisibilityScope = animatedVisibilityScope,
enter = fadeIn(),
exit = fadeOut(),
resizeMode = SharedTransitionScope.ResizeMode.ScaleToBounds()
)
// ...
) {
// ...
}
}
}
https://developer.android.com/develop/ui/compose/animation/shared-elements