K Merle
10/28/2021, 5:15 PM@Composable
fun rememberTransitions(duration: Int = 500): Transitions {
val density = LocalDensity.current.density
val screenWidthDp = LocalConfiguration.current.screenWidthDp
val width = (screenWidthDp * density).toInt()
return rememberSaveable { Transitions(duration, width) }
}
class Transitions(private val duration: Int, private val screenWidth: Int): Serializable {
fun enterTransition(initialOffsetX: Int = screenWidth): EnterTransition {
return slideInHorizontally(
initialOffsetX = { initialOffsetX },
animationSpec = tween(
durationMillis = duration,
easing = FastOutSlowInEasing
)
)
}
fun exitTransition(initialOffsetX: Int = screenWidth): ExitTransition {
return slideOutHorizontally(
targetOffsetX = { -initialOffsetX },
animationSpec = tween(
durationMillis = duration,
easing = FastOutSlowInEasing
)
)
}
fun popEnterTransition(initialOffsetX: Int = screenWidth): EnterTransition {
return slideInHorizontally(
initialOffsetX = { -initialOffsetX },
animationSpec = tween(
durationMillis = duration,
easing = FastOutSlowInEasing
)
)
}
fun popExitTransition(initialOffsetX: Int = screenWidth): ExitTransition {
return slideOutHorizontally(
targetOffsetX = { initialOffsetX },
animationSpec = tween(
durationMillis = duration,
easing = FastOutSlowInEasing
)
)
}
}