所以我用这个图书馆
com.google.accompanist:accompanist-navigation-animation
用于Compose中的动画导航。
对于所有屏幕,当我在它们之间导航时,我都会设置以下动画
NavController.navigate(route, ...)
和
NavController.navigateUp()
:
composable(
enterTransition = {
slideIntoContainer(
towards = AnimatedContentScope.SlideDirection.Left,
animationSpec = tween(400)
)
}
exitTransition = {
slideOutOfContainer(
towards = AnimatedContentScope.SlideDirection.Left,
animationSpec = tween(400)
)
},
popEnterTransition = {
slideIntoContainer(
towards = AnimatedContentScope.SlideDirection.Right,
animationSpec = tween(400)
)
},
popExitTransition = {
slideOutOfContainer(
towards = AnimatedContentScope.SlideDirection.Right,
animationSpec = tween(400)
)
},
route = route,
arguments = arguments,
deepLinks = deepLinks,
content = content
)
但它使用了一些不同的动画来更改
startDestination
:
val startDestination = when (userStateUI) {
UserStateUI.LOADING -> return@AppBackground
UserStateUI.ON_BOARDING -> OnBoardingDestination.route
UserStateUI.UNSIGNED -> WelcomeDestination.route
UserStateUI.SIGNED -> DashboardDestination.route
}
Scaffold(
...
) {
AnimatedNavHost(
startDestination = startDestination,
...
) {
... screens
}
它不使用我设置的动画
NavGraphBuilder.composable
作用
动画从左上角触发(像对角线动画而不是我设置的水平幻灯片动画)
当屏幕发生变化时,我该怎么做才能为所有可能的逻辑获得相同的动画?
已更新
我试着为设置相同的动画
AnimatedNavHost
但这并没有改变任何事情:
AnimatedNavHost(
...
startDestination = startDestination,
enterTransition = ...
exitTransition = ...
popEnterTransition = ...
popExitTransition = ...
) { ...