mirror of
https://github.com/bitwarden/android.git
synced 2025-02-16 11:59:57 +03:00
Treat transition types using separate durations (#189)
This commit is contained in:
parent
1873ffe985
commit
0c9bd40590
2 changed files with 51 additions and 17 deletions
|
@ -4,6 +4,7 @@ import androidx.navigation.NavController
|
|||
import androidx.navigation.NavGraphBuilder
|
||||
import androidx.navigation.NavOptions
|
||||
import androidx.navigation.compose.composable
|
||||
import com.x8bit.bitwarden.ui.platform.theme.TransitionProviders
|
||||
|
||||
/**
|
||||
* The functions below pertain to entry into the [VaultUnlockedNavBarScreen].
|
||||
|
@ -23,7 +24,13 @@ fun NavController.navigateToVaultUnlockedNavBar(navOptions: NavOptions? = null)
|
|||
fun NavGraphBuilder.vaultUnlockedNavBarDestination(
|
||||
onNavigateToVaultAddItem: () -> Unit,
|
||||
) {
|
||||
composable(VAULT_UNLOCKED_NAV_BAR_ROUTE) {
|
||||
composable(
|
||||
route = VAULT_UNLOCKED_NAV_BAR_ROUTE,
|
||||
enterTransition = TransitionProviders.Enter.stay,
|
||||
exitTransition = TransitionProviders.Exit.stay,
|
||||
popEnterTransition = TransitionProviders.Enter.stay,
|
||||
popExitTransition = TransitionProviders.Exit.stay,
|
||||
) {
|
||||
VaultUnlockedNavBarScreen(onNavigateToVaultAddItem = onNavigateToVaultAddItem)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,9 +22,36 @@ typealias NonNullExitTransitionProvider =
|
|||
(@JvmSuppressWildcards AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition)
|
||||
|
||||
/**
|
||||
* The default transition time (in milliseconds) for all transitions in the [TransitionProviders].
|
||||
* The default transition time (in milliseconds) for all fade transitions in the
|
||||
* [TransitionProviders].
|
||||
*/
|
||||
const val DEFAULT_TRANSITION_TIME_MS: Int = 350
|
||||
const val DEFAULT_FADE_TRANSITION_TIME_MS: Int = 300
|
||||
|
||||
/**
|
||||
* The default transition time (in milliseconds) for all slide transitions in the
|
||||
* [TransitionProviders].
|
||||
*/
|
||||
const val DEFAULT_SLIDE_TRANSITION_TIME_MS: Int = 450
|
||||
|
||||
/**
|
||||
* The default transition time (in milliseconds) for all slide transitions in the
|
||||
* [TransitionProviders].
|
||||
*/
|
||||
const val DEFAULT_PUSH_TRANSITION_TIME_MS: Int = 300
|
||||
|
||||
/**
|
||||
* The default transition time (in milliseconds) for all "stay"/no-op transitions in the
|
||||
* [TransitionProviders].
|
||||
*
|
||||
* This should be at least as large as any other transition that might also be happening during a
|
||||
* navigation.
|
||||
*/
|
||||
val DEFAULT_STAY_TRANSITION_TIME_MS: Int =
|
||||
maxOf(
|
||||
DEFAULT_FADE_TRANSITION_TIME_MS,
|
||||
DEFAULT_SLIDE_TRANSITION_TIME_MS,
|
||||
DEFAULT_PUSH_TRANSITION_TIME_MS,
|
||||
)
|
||||
|
||||
/**
|
||||
* Checks if the parent of the destination before and after the navigation is the same. This is
|
||||
|
@ -186,7 +213,7 @@ object RootTransitionProviders {
|
|||
* Fades the new screen in.
|
||||
*/
|
||||
val fadeIn: NonNullEnterTransitionProvider = {
|
||||
fadeIn(tween(DEFAULT_TRANSITION_TIME_MS))
|
||||
fadeIn(tween(DEFAULT_FADE_TRANSITION_TIME_MS))
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -195,8 +222,8 @@ object RootTransitionProviders {
|
|||
val pushLeft: NonNullEnterTransitionProvider = {
|
||||
slideIntoContainer(
|
||||
towards = AnimatedContentTransitionScope.SlideDirection.Left,
|
||||
animationSpec = tween(DEFAULT_TRANSITION_TIME_MS),
|
||||
) + fadeIn(tween(DEFAULT_TRANSITION_TIME_MS))
|
||||
animationSpec = tween(DEFAULT_PUSH_TRANSITION_TIME_MS),
|
||||
) + fadeIn(tween(DEFAULT_PUSH_TRANSITION_TIME_MS))
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -205,8 +232,8 @@ object RootTransitionProviders {
|
|||
val pushRight: NonNullEnterTransitionProvider = {
|
||||
slideIntoContainer(
|
||||
towards = AnimatedContentTransitionScope.SlideDirection.Right,
|
||||
animationSpec = tween(DEFAULT_TRANSITION_TIME_MS),
|
||||
) + fadeIn(tween(DEFAULT_TRANSITION_TIME_MS))
|
||||
animationSpec = tween(DEFAULT_PUSH_TRANSITION_TIME_MS),
|
||||
) + fadeIn(tween(DEFAULT_PUSH_TRANSITION_TIME_MS))
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -215,7 +242,7 @@ object RootTransitionProviders {
|
|||
val slideUp: NonNullEnterTransitionProvider = {
|
||||
slideIntoContainer(
|
||||
towards = AnimatedContentTransitionScope.SlideDirection.Up,
|
||||
animationSpec = tween(DEFAULT_TRANSITION_TIME_MS),
|
||||
animationSpec = tween(DEFAULT_SLIDE_TRANSITION_TIME_MS),
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -226,7 +253,7 @@ object RootTransitionProviders {
|
|||
*/
|
||||
val stay: NonNullEnterTransitionProvider = {
|
||||
fadeIn(
|
||||
animationSpec = tween(DEFAULT_TRANSITION_TIME_MS),
|
||||
animationSpec = tween(DEFAULT_STAY_TRANSITION_TIME_MS),
|
||||
initialAlpha = 1f,
|
||||
)
|
||||
}
|
||||
|
@ -240,7 +267,7 @@ object RootTransitionProviders {
|
|||
* Fades the current screen out.
|
||||
*/
|
||||
val fadeOut: NonNullExitTransitionProvider = {
|
||||
fadeOut(tween(DEFAULT_TRANSITION_TIME_MS))
|
||||
fadeOut(tween(DEFAULT_FADE_TRANSITION_TIME_MS))
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -249,8 +276,8 @@ object RootTransitionProviders {
|
|||
val pushLeft: NonNullExitTransitionProvider = {
|
||||
slideOutOfContainer(
|
||||
towards = AnimatedContentTransitionScope.SlideDirection.Left,
|
||||
animationSpec = tween(DEFAULT_TRANSITION_TIME_MS),
|
||||
) + fadeOut(tween(DEFAULT_TRANSITION_TIME_MS))
|
||||
animationSpec = tween(DEFAULT_PUSH_TRANSITION_TIME_MS),
|
||||
) + fadeOut(tween(DEFAULT_PUSH_TRANSITION_TIME_MS))
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -259,8 +286,8 @@ object RootTransitionProviders {
|
|||
val pushRight: NonNullExitTransitionProvider = {
|
||||
slideOutOfContainer(
|
||||
towards = AnimatedContentTransitionScope.SlideDirection.Right,
|
||||
animationSpec = tween(DEFAULT_TRANSITION_TIME_MS),
|
||||
) + fadeOut(tween(DEFAULT_TRANSITION_TIME_MS))
|
||||
animationSpec = tween(DEFAULT_PUSH_TRANSITION_TIME_MS),
|
||||
) + fadeOut(tween(DEFAULT_PUSH_TRANSITION_TIME_MS))
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -269,7 +296,7 @@ object RootTransitionProviders {
|
|||
val slideDown: NonNullExitTransitionProvider = {
|
||||
slideOutOfContainer(
|
||||
towards = AnimatedContentTransitionScope.SlideDirection.Down,
|
||||
animationSpec = tween(DEFAULT_TRANSITION_TIME_MS),
|
||||
animationSpec = tween(DEFAULT_SLIDE_TRANSITION_TIME_MS),
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -280,7 +307,7 @@ object RootTransitionProviders {
|
|||
*/
|
||||
val stay: NonNullExitTransitionProvider = {
|
||||
fadeOut(
|
||||
animationSpec = tween(DEFAULT_TRANSITION_TIME_MS),
|
||||
animationSpec = tween(DEFAULT_STAY_TRANSITION_TIME_MS),
|
||||
targetAlpha = 0.99f,
|
||||
)
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue