代码之家  ›  专栏  ›  技术社区  ›  user924

AnimatedNavHost对startDestination使用不同的动画

  •  0
  • user924  · 技术社区  · 3 年前

    所以我用这个图书馆 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 = ...
    ) { ...
    
    0 回复  |  直到 3 年前