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

如何将Material 3警告对话框动画从Emphasized motion迁移至Expressive motion?

如何将Material 3警告对话框动画从Emphasized motion迁移至Expressive motion?

嗨,我刚好折腾过Material 3这个动画迁移的事儿,给你整理了一套清晰的步骤,帮你顺利把警告对话框的动画从Emphasized motion切换到Expressive motion:

  • 替换动画命名标识
    之前你用的emphasized.decelerate(对话框进入动效)和emphasized.accelerate(对话框退出动效)是Emphasized motion的通用命名,Expressive motion改用了更贴合组件场景的专属标识——对话框的进入动画直接用dialogEnter,退出动画用dialogExit,直接在你的动画配置里把旧名称替换成这两个新的就行。

  • 适配动画参数与插值器
    如果你之前自定义过Emphasized动画的时长、插值器,迁移时建议换成Material 3 Expressive motion推荐的自然曲线,比如FastOutSlowIn插值器,它能让动画的加速减速更符合真实物理动效,比原来的通用accelerate/decelerate更流畅。给你个Android Compose的配置示例:

    // 定义对话框进入动画
    val dialogEnter = remember {
        keyframes {
            durationMillis = 250 // 符合Expressive的默认时长
            0f at 0 with FastOutSlowInEasing
            1f at durationMillis
        }
    }
    // 定义对话框退出动画
    val dialogExit = remember {
        keyframes {
            durationMillis = 200
            1f at 0 with FastOutSlowInEasing
            0f at durationMillis
        }
    }
    
  • 绑定动画到组件
    把新定义的动画直接绑定到警告对话框的显示/隐藏逻辑上,还是用Compose举例子,直接在AlertDialog组件的参数里配置:

    AlertDialog(
        onDismissRequest = { /* 你的关闭逻辑 */ },
        enter = dialogEnter,
        exit = dialogExit,
        title = { Text("提示") },
        text = { Text("这是使用Expressive动画的对话框") },
        confirmButton = { /* 确认按钮逻辑 */ }
    )
    

    如果是用XML布局的话,也可以在对话框的Style里替换动画引用,把原来的动画资源换成Material 3提供的@anim/dialog_enter和@anim/dialog_exit,插值器换成@interpolator/fast_out_slow_in。

  • 测试验证动效
    替换完成后,记得在不同尺寸的设备上测试下,确保动画流畅自然,符合Expressive motion的设计初衷——让对话框的出现和消失感觉是界面的自然延伸,有层次感但不突兀。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 13:05:28