1 | initial version |
Standard Android animation can be utilized to switch screens in a single activity Compose application by implementing the following steps:
def nav_version = "2.3.5"
implementation "androidx.navigation:navigation-compose:$nav_version"
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
val navController = rememberNavController()
NavHost(navController, startDestination = "home") {
composable("home") { HomeScreen(navController) }
composable("settings") { SettingsScreen(navController) }
}
@Composable
fun HomeScreen(navController: NavController) {
// Content for the home screen
}
@Composable
fun SettingsScreen(navController: NavController) {
// Content for the settings screen
}
Button(onClick = { navController.navigate("settings") }) {
Text(text = "Go to settings")
}
val transition = updateTransition(targetState = true, label = "Button Transition")
val buttonOffset by transition.animateDp(
label = "Button Offset",
transitionSpec = {
slideInHorizontally({ width -> width }) + fadeIn() with
slideOutHorizontally({ width -> -width }) + fadeOut()
}
) { if (it) 16.dp else 0.dp }
Button(
onClick = { navController.navigate("settings") },
modifier = Modifier.offset(buttonOffset)
) {
Text(text = "Go to settings")
}
This code will animate the button as it transitions to the SettingsScreen.