我用JetPack Compose 搭建的项目,有用到Navigation, 有20个页面,如何统一给所有页面加上转场动画
时间: 2023-05-17 11:03:55 浏览: 67
您可以使用Compose提供的Transition API来为所有页面添加转场动画。您可以在每个页面的setContent函数中使用Transition组件,然后在Transition中定义您想要的动画效果。例如,您可以使用Slide动画来实现页面之间的平移效果,或者使用Fade动画来实现页面的淡入淡出效果。以下是一个示例代码:
```
@Composable
fun MyApp() {
val navController = rememberNavController()
NavHost(navController, startDestination = "page1") {
composable("page1") {
Transition(
enterTransition = { initial, target ->
slideInHorizontally(
initialOffsetX = { 1000 },
animationSpec = tween(durationMillis = 500)
) + fadeIn(animationSpec = tween(durationMillis = 500))
},
exitTransition = { initial, target ->
slideOutHorizontally(
targetOffsetX = { -1000 },
animationSpec = tween(durationMillis = 500)
) + fadeOut(animationSpec = tween(durationMillis = 500))
}
) {
Page1(navController)
}
}
composable("page2") {
Transition(
enterTransition = { initial, target ->
slideInHorizontally(
initialOffsetX = { 1000 },
animationSpec = tween(durationMillis = 500)
) + fadeIn(animationSpec = tween(durationMillis = 500))
},
exitTransition = { initial, target ->
slideOutHorizontally(
targetOffsetX = { -1000 },
animationSpec = tween(durationMillis = 500)
) + fadeOut(animationSpec = tween(durationMillis = 500))
}
) {
Page2(navController)
}
}
// ... 其他页面
}
}
```
在上面的代码中,我们使用了Slide和Fade动画来实现页面之间的平移和淡入淡出效果。您可以根据需要自定义动画效果。
阅读全文