NavTransition

@Serializable
sealed class NavTransition(source)

Describes the animation style used when a screen enters or exits the composition.

Assign these to a Screen or Modal's enterTransition / exitTransition properties. Call resolve to obtain a ResolvedNavTransition with concrete animation lambdas.

object HomeScreen : Screen {
override val route = "home"
override val enterTransition = NavTransition.SlideInRight
override val exitTransition = NavTransition.SlideOutLeft
}

Inheritors

Types

Link copied to clipboard
object Companion
Link copied to clipboard
@Serializable
class Custom(val durationMillis: Int = DEFAULT_ANIMATION_DURATION, val alpha: (Float) -> Float = { 1f }, val scaleX: (Float) -> Float = { 1f }, val scaleY: (Float) -> Float = { 1f }, val translationX: (Float) -> Float = { 0f }, val translationY: (Float) -> Float = { 0f }, val rotationZ: (Float) -> Float = { 0f }) : NavTransition

Fully custom transition using per-frame transform lambdas.

Link copied to clipboard
@Serializable
data object Fade : NavTransition

Cross-fade in — opacity goes from 0 to 1.

Link copied to clipboard
@Serializable
data object FadeOut : NavTransition

Cross-fade out — opacity goes from 1 to 0.

Link copied to clipboard
@Serializable
data object IOSSlideIn : NavTransition

iOS-style push: new screen slides in from the right edge.

Link copied to clipboard
@Serializable
data object IOSSlideOut : NavTransition

iOS-style pop: outgoing screen slides left with a parallax scale-down effect.

Link copied to clipboard
@Serializable
data object MaterialSlideIn : NavTransition

Material Design 3 forward enter: slide in from right with subtle scale and fade.

Link copied to clipboard
@Serializable
data object MaterialSlideOut : NavTransition

Material Design 3 forward exit: slide out to the left with a trailing fade.

Link copied to clipboard
@Serializable
data object None : NavTransition

No animation; the screen appears or disappears instantly.

Link copied to clipboard
@Serializable
class Scale(val durationMillis: Int = DEFAULT_ANIMATION_DURATION) : NavTransition

Screen scales up (80 % → 100 %) while fading in.

Link copied to clipboard
@Serializable
class ScaleOut(val durationMillis: Int = DEFAULT_ANIMATION_DURATION) : NavTransition

Screen scales down (100 % → 80 %) while fading out.

Link copied to clipboard
@Serializable
data object SlideInLeft : NavTransition

Screen slides in from the left edge.

Link copied to clipboard
@Serializable
data object SlideInRight : NavTransition

Screen slides in from the right edge.

Link copied to clipboard
@Serializable
data object SlideOutBottom : NavTransition

Screen slides down and exits through the bottom edge.

Link copied to clipboard
@Serializable
data object SlideOutLeft : NavTransition

Screen slides out toward the left edge.

Link copied to clipboard
@Serializable
data object SlideOutRight : NavTransition

Screen slides out toward the right edge.

Link copied to clipboard
@Serializable
data object SlideUpBottom : NavTransition

Screen slides up from the bottom edge.

Link copied to clipboard
@Serializable
data object StackPop : NavTransition

Card-stack pop: outgoing screen falls down and fades out.

Link copied to clipboard
@Serializable
data object StackPush : NavTransition

Card-stack push: new screen rises from the bottom with a scale-up and fade.

Properties

Link copied to clipboard
@Transient
open val durationMillis: Int

Functions

Link copied to clipboard
fun NavTransition.resolve(screenWidth: Float, screenHeight: Float, isForward: Boolean = true): ResolvedNavTransition

Resolves this NavTransition into a ResolvedNavTransition with concrete per-frame lambdas.