[英]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.