mirror of
https://github.com/rhunk/SnapEnhance.git
synced 2025-05-29 04:50:15 +02:00
feat: navigation transitions
This commit is contained in:
parent
6cabb92c04
commit
cb301f8a42
@ -1,6 +1,9 @@
|
|||||||
package me.rhunk.snapenhance.ui.manager
|
package me.rhunk.snapenhance.ui.manager
|
||||||
|
|
||||||
import androidx.compose.animation.core.animateFloatAsState
|
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.Box
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.fillMaxHeight
|
import androidx.compose.foundation.layout.fillMaxHeight
|
||||||
@ -44,7 +47,13 @@ class Navigation(
|
|||||||
startDestination: EnumSection,
|
startDestination: EnumSection,
|
||||||
innerPadding: PaddingValues
|
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) ->
|
sections.forEach { (_, instance) ->
|
||||||
instance.navController = navHostController
|
instance.navController = navHostController
|
||||||
instance.build(this)
|
instance.build(this)
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package me.rhunk.snapenhance.ui.manager.sections.features
|
package me.rhunk.snapenhance.ui.manager.sections.features
|
||||||
|
|
||||||
import androidx.activity.ComponentActivity
|
import androidx.activity.ComponentActivity
|
||||||
|
import androidx.compose.animation.AnimatedContentTransitionScope
|
||||||
|
import androidx.compose.animation.core.tween
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
@ -150,7 +152,11 @@ class FeaturesSection : Section() {
|
|||||||
Container(context.config.root)
|
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 ->
|
backStackEntry.arguments?.getString("name")?.let { containerName ->
|
||||||
allContainers[containerName]?.let {
|
allContainers[containerName]?.let {
|
||||||
Container(it.value.get() as ConfigContainer)
|
Container(it.value.get() as ConfigContainer)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user