You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置Jetpack Compose动画预览默认显示指定时间帧?

在Jetpack Compose预览中指定动画默认显示帧

当然可以,以下是几种实用的实现方式:

1. 直接设置动画初始值为目标帧状态

如果你的动画基于animate*AsState这类API,不需要保留完整动画启动逻辑的话,直接把初始值设为你想要展示的时间帧对应的状态值即可。预览面板会直接渲染这个状态,而非动画的初始状态。

示例代码:

@Preview
@Composable
fun AnimatedComponentPreview() {
    // 直接将初始值设为动画进行到70%时的进度值
    val progress by animateFloatAsState(
        targetValue = 1f,
        initialValue = 0.7f,
        animationSpec = tween(durationMillis = 1000)
    )
    CircularProgressIndicator(progress = progress)
}

2. 区分预览/运行环境控制状态

如果需要保留完整动画逻辑,但预览时默认停在指定帧,可以通过LocalInspectionMode判断当前是否处于预览模式,针对性设置状态值:

示例代码:

@Preview
@Composable
fun TargetFramePreview() {
    val isPreview = LocalInspectionMode.current
    val targetProgress = 0.5f // 想要展示的动画帧进度
    val progress = remember { mutableStateOf(if (isPreview) targetProgress else 0f) }

    // 非预览环境下执行完整动画
    if (!isPreview) {
        LaunchedEffect(Unit) {
            progress.animateTo(1f, animationSpec = tween(1000))
        }
    }

    CircularProgressIndicator(progress = progress.value)
}

3. 利用预览工具的专属配置(限部分场景)

部分Compose预览工具支持通过@Preview注解的扩展参数控制动画预览,但该功能没有全局通用的官方API,兼容性较差,因此更推荐前两种方法。


内容的提问来源于stack exchange,提问作者Juanje

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 13:03:11