From cb301f8a423b83bf80ca130d7e396228732e122e Mon Sep 17 00:00:00 2001 From: rhunk <101876869+rhunk@users.noreply.github.com> Date: Sun, 20 Aug 2023 01:42:59 +0200 Subject: [PATCH] feat: navigation transitions --- .../me/rhunk/snapenhance/ui/manager/Navigation.kt | 11 ++++++++++- .../ui/manager/sections/features/FeaturesSection.kt | 8 +++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/Navigation.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/Navigation.kt index 627c6237..ed2cdd02 100644 --- a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/Navigation.kt +++ b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/Navigation.kt @@ -1,6 +1,9 @@ package me.rhunk.snapenhance.ui.manager import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.animation.core.tween +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxHeight @@ -44,7 +47,13 @@ class Navigation( startDestination: EnumSection, innerPadding: PaddingValues ) { - NavHost(navHostController, startDestination = startDestination.route, Modifier.padding(innerPadding)) { + NavHost( + navHostController, + startDestination = startDestination.route, + Modifier.padding(innerPadding), + enterTransition = { fadeIn(tween(200)) }, + exitTransition = { fadeOut(tween(200)) } + ) { sections.forEach { (_, instance) -> instance.navController = navHostController instance.build(this) diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/features/FeaturesSection.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/features/FeaturesSection.kt index c429dab4..991aa170 100644 --- a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/features/FeaturesSection.kt +++ b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/features/FeaturesSection.kt @@ -1,6 +1,8 @@ package me.rhunk.snapenhance.ui.manager.sections.features import androidx.activity.ComponentActivity +import androidx.compose.animation.AnimatedContentTransitionScope +import androidx.compose.animation.core.tween import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement @@ -150,7 +152,11 @@ class FeaturesSection : Section() { Container(context.config.root) } - composable(FEATURE_CONTAINER_ROUTE) { backStackEntry -> + composable(FEATURE_CONTAINER_ROUTE, enterTransition = { + slideIntoContainer(AnimatedContentTransitionScope.SlideDirection.Left, animationSpec = tween(100)) + }, exitTransition = { + slideOutOfContainer(AnimatedContentTransitionScope.SlideDirection.Right, animationSpec = tween(300)) + }) { backStackEntry -> backStackEntry.arguments?.getString("name")?.let { containerName -> allContainers[containerName]?.let { Container(it.value.get() as ConfigContainer)