commit cb301f8a423b83bf80ca130d7e396228732e122e
parent 6cabb92c045a7273c11bb6cd5c9f1dbede32c435
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Sun, 20 Aug 2023 01:42:59 +0200

feat: navigation transitions

Diffstat:
Mapp/src/main/kotlin/me/rhunk/snapenhance/ui/manager/Navigation.kt | 11++++++++++-
Mapp/src/main/kotlin/me/rhunk/snapenhance/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 @@ -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 @@ -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)