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:
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)