我用JetPack Compose 搭建的项目,有用到Navigation, 有20个页面,如何统一给所有页面加上转场动画
时间: 2023-05-17 17:04:12 浏览: 83
您可以使用 Compose 中的 Transition API 来为所有页面添加转场动画。首先,您需要在项目中添加以下依赖项:
```
implementation "androidx.compose.animation:animation:$compose_version"
```
然后,您可以使用 `AnimatedVisibility` 组件来包装每个页面,并在其中定义转场动画。例如,以下代码将为每个页面添加淡入淡出的转场动画:
```
@Composable
fun AnimatedScreen(content: @Composable () -> Unit) {
AnimatedVisibility(
visible = true,
enter = fadeIn() + slideInVertically(),
exit = fadeOut() + slideOutVertically()
) {
content()
}
}
```
最后,您只需要在 Navigation 中使用 `AnimatedScreen` 组件来包装每个页面即可:
```
navController.navigate("page1") {
launchSingleTop = true
popUpTo(navController.graph.startDestinationId) {
saveState = true
}
anim {
enter = slideInHorizontally(initialOffsetX = { 1000 })
exit = slideOutHorizontally(targetOffsetX = { -1000 })
popEnter = slideInHorizontally(initialOffsetX = { -1000 })
popExit = slideOutHorizontally(targetOffsetX = { 1000 })
}
}
```
这样,您就可以为所有页面添加统一的转场动画了。
阅读全文