TextMotion

Class

Common
expect class TextMotion

Defines ways to render and place glyphs to provide readability and smooth animations for text.

Companion Object

Properties

Common
val Static: TextMotion

Optimizes glyph shaping, placement, and overall rendering for maximum readability. Intended for text that is not animated. This is the default TextMotion.

Common
val Animated: TextMotion

Text is rendered for maximum linearity which provides smooth animations for text. Trade-off is the readability of the text on some low DPI devices, which still should not be a major concern. Use this TextMotion if you are planning to scale, translate, or rotate text.

Android
actual class TextMotion
internal constructor(
    internal val linearity: Linearity,
    internal val subpixelTextPositioning: Boolean,
)

Implementation of possible TextMotion configurations on Android.

Companion Object

Properties

Android
actual val Static: TextMotion
Android
actual val Animated: TextMotion

Code Examples

TextMotionSample

/**
 * This sample demonstrates how to define TextMotion on a Text composable that scales up and down
 * repeatedly.
 */
@Composable
fun TextMotionSample() {
    val infiniteTransition = rememberInfiniteTransition()
    val scale by
        infiniteTransition.animateFloat(
            initialValue = 1f,
            targetValue = 8f,
            animationSpec = infiniteRepeatable(tween(1000), RepeatMode.Reverse),
        )
    Text(
        text = "Hello",
        modifier =
            Modifier.graphicsLayer {
                scaleX = scale
                scaleY = scale
                transformOrigin = TransformOrigin.Center
            },
        // Text composable does not take TextMotion as a parameter.
        // Provide it via style argument but make sure that we are copying from current theme
        style = LocalTextStyle.current.copy(textMotion = TextMotion.Animated),
    )
}