feat: navigation transitions

This commit is contained in:
rhunk 2023-08-20 01:42:59 +02:00
parent 6cabb92c04
commit cb301f8a42
2 changed files with 17 additions and 2 deletions

View File

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

View File

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