为什么我的 AnimatedContent 没有使用 Jetpack Compose 显示实际动画?

OhW*_*One 4 android android-jetpack-compose

我用来AnimatedContent在两个不同的视图之间设置动画,但即使我指定要使用垂直过渡,它仍然在视图之间切换,但不应用实际的过渡动画。这是代码:

val isEditState = remember { mutableStateOf(false) }

AnimatedContent(
     targetState = isEditState,
     transitionSpec = {
          (slideInVertically() with slideOutVertically()).using(SizeTransform(clip = false))
     }
) { targetState ->
     if (targetState.value) {
          EditView(...)
     } else {
          NonEditView(...)
     }
}
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题以使动画正常工作?

如果我使用AnimatedVisibility它确实有效,但我必须将它专门应用于每个视图。

AnimatedVisibility(
        visible = isEditState.value,
        enter = slideInVertically(),
        exit = slideOutVertically(),
        content = EditView(...)
    )
Run Code Online (Sandbox Code Playgroud)

cd1*_*cd1 6

尝试使用isEditable.value作为目标状态:

AnimatedContent(
     targetState = isEditState.value,
     transitionSpec = {
          (slideInVertically() with slideOutVertically()).using(SizeTransform(clip = false))
     }
) { targetState ->
     if (targetState) {
          EditView(...)
     } else {
          NonEditView(...)
     }
}
Run Code Online (Sandbox Code Playgroud)

变量isEditable(即状态)不会改变,这就是它没有动画的原因。改变的是它的价值。