@@ -33,13 +33,20 @@ package no.nordicsemi.android.common.navigation
3333
3434import android.app.Activity
3535import android.os.Bundle
36- import androidx.activity.compose.BackHandler
36+ import androidx.compose.animation.AnimatedContentTransitionScope
37+ import androidx.compose.animation.EnterTransition
38+ import androidx.compose.animation.ExitTransition
39+ import androidx.compose.animation.SizeTransform
40+ import androidx.compose.animation.core.tween
41+ import androidx.compose.animation.fadeIn
42+ import androidx.compose.animation.fadeOut
3743import androidx.compose.runtime.Composable
3844import androidx.compose.runtime.getValue
3945import androidx.compose.ui.Modifier
4046import androidx.compose.ui.platform.LocalContext
4147import androidx.hilt.navigation.compose.hiltViewModel
4248import androidx.lifecycle.compose.collectAsStateWithLifecycle
49+ import androidx.navigation.NavBackStackEntry
4350import androidx.navigation.NavGraph.Companion.findStartDestination
4451import androidx.navigation.NavGraphBuilder
4552import androidx.navigation.compose.NavHost
@@ -59,11 +66,40 @@ import no.nordicsemi.android.common.navigation.internal.navigate
5966 *
6067 * @param destinations The list of possible destinations.
6168 * @param modifier The modifier to be applied to the layout.
69+ * @param enterTransition callback to define enter transitions for destination in this host
70+ * @param exitTransition callback to define exit transitions for destination in this host
71+ * @param popEnterTransition callback to define popEnter transitions for destination in this host
72+ * @param popExitTransition callback to define popExit transitions for destination in this host
73+ * @param sizeTransform callback to define the size transform for destinations in this host
6274 */
6375@Composable
6476fun NavigationView (
6577 destinations : List <NavigationDestination >,
6678 modifier : Modifier = Modifier ,
79+ enterTransition :
80+ (@JvmSuppressWildcards
81+ AnimatedContentTransitionScope <NavBackStackEntry >.() -> EnterTransition ) =
82+ {
83+ fadeIn(animationSpec = tween(700))
84+ },
85+ exitTransition :
86+ (@JvmSuppressWildcards
87+ AnimatedContentTransitionScope <NavBackStackEntry >.() -> ExitTransition ) =
88+ {
89+ fadeOut(animationSpec = tween(700))
90+ },
91+ popEnterTransition :
92+ (@JvmSuppressWildcards
93+ AnimatedContentTransitionScope <NavBackStackEntry >.() -> EnterTransition ) =
94+ enterTransition,
95+ popExitTransition :
96+ (@JvmSuppressWildcards
97+ AnimatedContentTransitionScope <NavBackStackEntry >.() -> ExitTransition ) =
98+ exitTransition,
99+ sizeTransform :
100+ (@JvmSuppressWildcards
101+ AnimatedContentTransitionScope <NavBackStackEntry >.() -> SizeTransform ? )? =
102+ null,
67103) {
68104 val navHostController = rememberNavController()
69105
@@ -114,6 +150,11 @@ fun NavigationView(
114150 modifier = modifier,
115151 navController = navHostController,
116152 startDestination = destinations.first().id.name,
153+ enterTransition = enterTransition,
154+ exitTransition = exitTransition,
155+ popEnterTransition = popEnterTransition,
156+ popExitTransition = popExitTransition,
157+ sizeTransform = sizeTransform,
117158 ) {
118159 create(destinations, navigation)
119160 }
0 commit comments