我目前有一个可以为其内容添加动画效果的对话框。它显示如下,其中 AnimatedScaleInTransition 是一个 AnimatedVisibility Composable,它扩展/收缩并使用 content() 作为其输入。它工作正常,对话框启动其褪色的背景,然后动画滑入。
Dialog(onDismissRequest = {
coroutineScope.launch {
startDismissWithExitAnimation(animateTrigger, onDismissRequest)
}
}
) {
Box(
modifier = modifier
) {
AnimatedScaleInTransition(time = 200, visible = animateTrigger.value) {
content()
}
}
}
我想做的是在第一个对话框上动画另一个对话框。当我这样做时,我得到的不是正常的褪色灰色对话框背景,而是一个白色的背景,它只是弹出了丑陋的头部,然后是动画。它还使用我尝试过的自定义对话框执行此操作,忽略其他封闭的可组合项。我错过了什么?
尝试使用 AnimatedVisibility 来处理多个项目的过渡动画。 我希望这对你有帮助
AnimatedVisibility(
visible = conditionToShowDialog1,
enter = fadeIn(),
exit = fadeOut()
) {
Dialog1Body()
}
AnimatedVisibility(
visible = conditionToShowDialog2,
enter = fadeIn(),
exit = fadeOut()
) {
Dialog2Body()
}
在任何变化的条件下,后面的可组合项将添加到合成中或使用定义的进入和退出动画删除