簡體   English   中英

Jetpack Navigation Compose Animation 錯誤彈出 animation

[英]Jetpack Navigation Compose Animation incorrect pop animation

我使用 Accompanist Jetpack Navigation Computer Animation 的庫,當我按下后退按鈕時,我規定的 animation 沒有執行,而是其他一些奇怪的。 視頻 animation

AnimatedNavHost(navController = navController,
        startDestination = categoryScreenRoute,
        enterTransition = {
            slideIntoContainer(
                AnimatedContentScope.SlideDirection.Left, animationSpec = tween(speedAnimation)
            )
        },
        exitTransition = {
            slideOutOfContainer(
                AnimatedContentScope.SlideDirection.Left, animationSpec = tween(speedAnimation)
            )
        },
        popEnterTransition = {
            slideIntoContainer(
                AnimatedContentScope.SlideDirection.Right, animationSpec = tween(speedAnimation)
            )
        },
        popExitTransition = {
            slideOutOfContainer(
                AnimatedContentScope.SlideDirection.Right, animationSpec = tween(speedAnimation)
            )
        })
    {
        composable(route = categoryScreenRoute) {
            CategoryScreen(navController = navController, viewModel = viewModel)
        }
        composable(route = itemsScreenRoute) {
            ItemsScreen(navController = navController, viewModel = viewModel)
        }
    }

我嘗試為每個可組合的 function 指定一個 animation,完全刪除了轉換回來的 animation。

定義一個擴展方法

fun NavGraphBuilder.setComposable(
    route: String,
    arguments: List<NamedNavArgument> = emptyList(),
    deepLinks: List<NavDeepLink> = emptyList(),
    content: @Composable AnimatedVisibilityScope.(NavBackStackEntry) -> Unit){
    return composable(
        route = route,
        arguments = arguments,
        deepLinks = deepLinks,
        enterTransition = {
           slideIntoContainer(
                AnimatedContentScope.SlideDirection.Left, animationSpec = tween(speedAnimation)
            )
        },
        exitTransition = {
           slideOutOfContainer(
                AnimatedContentScope.SlideDirection.Left, animationSpec = tween(speedAnimation)
            )
        },
        popEnterTransition = {
           slideIntoContainer(
                AnimatedContentScope.SlideDirection.Right, animationSpec = tween(speedAnimation)
            )
        },
        popExitTransition = {
             slideOutOfContainer(
                AnimatedContentScope.SlideDirection.Right, animationSpec = tween(speedAnimation)
            )
        },
        content = content
    )
}

使用方法如下

AnimatedNavHost(navController = navController, startDestination = categoryScreenRoute) {
        setComposable(route = categoryScreenRoute) {
            CategoryScreen(navController = navController, viewModel = viewModel)
        }
        setComposable(route = itemsScreenRoute) {
            ItemsScreen(navController = navController, viewModel = viewModel)
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM