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

Jetpack Compose切换视图动画卡顿,如何实现平滑淡入淡出?

优化Jetpack Compose视图切换动画的方案

你当前的写法问题在于同时用两个AnimatedVisibility控制视图切换——这会让两个视图在过渡过程中同时参与布局计算,额外增加重绘与布局开销,导致动画卡顿。其实完全可以在条件切换逻辑里实现流畅的淡入淡出动画,用AnimatedContent是更优的选择,它专门针对内容切换场景设计,能避免布局冲突,动画表现更丝滑。

替换后的代码示例:

Column {
    donationItems.forEach { item ->
        AnimatedContent(
            targetState = item.productId == productIdSelected,
            transitionSpec = {
                // 定义淡入淡出过渡:进入视图淡入,退出视图淡出
                fadeIn() with fadeOut()
            }
        ) { isSelected ->
            if (isSelected) {
                SomeView()
            } else {
                SomeView2()
            }
        }
    }
}

如果需要调整动画速度或叠加其他效果,比如结合滑动,可以修改transitionSpec:

transitionSpec = {
    fadeIn(animationSpec = tween(300)) with 
    fadeOut(animationSpec = tween(200))
}

另外,如果SomeView和SomeView2内部包含复杂布局或大量内容,建议给它们添加remember优化状态管理,避免切换时不必要的重组,进一步提升流畅度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 05:22:02