news 2026/8/26 3:25:22

鸿蒙动画系统解密:实现一个“果冻回弹”效果,彻底搞懂属性动画与转场动画

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
鸿蒙动画系统解密:实现一个“果冻回弹”效果,彻底搞懂属性动画与转场动画

🎢 前言:为什么你的动画看起来很“假”?

很多开发者写动画喜欢用默认的EaseInOut
但在真实物理世界中,物体运动是有惯性的。

  • 假的动画:A 点匀速移动到 B 点,像个机器人。
  • 真的动画:启动有加速,停止有减速,撞击有回弹(Overshoot)。

鸿蒙的 ArkUI 提供了curves.interpolatingSpring(插值弹簧),它模拟了真实的物理弹簧系统。我们不需要算复杂的微积分,只需要调节“硬度”和“阻尼”。


🏗️ 一、 核心概念:属性动画 vs 转场动画

在写代码前,必须分清这两个概念,否则你的动画要么不跑,要么乱跑。

动画原理对比 (Mermaid):

转场动画 (.transition)

修改变量 this.show = true

播放 Opacity/Scale 变化

组件不存在 (if false)

触发入场动画

组件存在 (UI树中)

用于: 组件的出现 (Insert) 和消失 (Remove)

属性动画 (.animation)

修改变量 this.w = 200

自动生成中间帧

状态 A (宽 100)

触发补间计算

状态 B (宽 200)

用于: 已经在屏幕上的组件发生变化


🍮 二、 实战 1:制作“果冻”按钮 (属性动画)

我们要实现的效果:

  1. 按压时:按钮缩小到 90%,有点“紧绷”的感觉。
  2. 松开时:按钮恢复到 100%,并带有“Duang Duang”的回弹。
1. 核心代码

ArkUI 的核心是“状态驱动 UI”。我们只需要改变scaleOptions的数值,配合.animation()属性,剩下的交给系统。

import{curves}from'@kit.ArkUI';@Entry@Componentstruct JellyButton{// 1. 定义状态:缩放比例@StatescaleValue:number=1;build(){Column(){// 一个看起来很好吃的按钮Button("按我体验果冻效果").width(200).height(60).backgroundColor('#FF6B6B').fontSize(20).borderRadius(30)// 2. 绑定状态:UI 随状态变化.scale({x:this.scaleValue,y:this.scaleValue})// 3. 【关键】添加属性动画// 只要上面的 scale 发生变化,这个动画就会触发.animation({// 使用插值弹簧曲线// velocity: 初始速度// mass: 质量 (越重回弹越慢)// stiffness: 刚度 (越硬回弹越快,像强力弹簧)// damping: 阻尼 (越小回弹次数越多,像果冻;越大越不弹)curve:curves.interpolatingSpring(10,1,228,15)})// 4. 交互逻辑.onTouch((event:TouchEvent)=>{if(event.type===TouchType.Down){// 按下:缩小,模拟受力this.scaleValue=0.9;}elseif(event.type===TouchType.Up){// 松开:恢复,触发弹簧回弹this.scaleValue=1;}})}.width('100%').height('100%').justifyContent(FlexAlign.Center)}}
💡 调参秘籍
  • 想让果冻更软、晃动更久?减小damping(阻尼),比如设为 8。
  • 想让按键反应更灵敏?增加stiffness(刚度),比如设为 300。

🚪 三、 实战 2:丝滑的入场 (转场动画)

当你点击果冻按钮后,弹出一张卡片。这时候就要用转场动画 (transition)
在鸿蒙 Next 中,推荐使用TransitionEffect组合链式语法。

@StateshowCard:boolean=false;// ... 在 build 中if(this.showCard){Text("我是弹出的卡片").width(300).height(200).backgroundColor('#4ECDC4').borderRadius(20).textAlign(TextAlign.Center).fontSize(24).fontColor(Color.White)// 【关键】定义入场和出场效果// 1. 初始状态:透明度为0,缩放为0.5,且向下偏移 50vp.transition(TransitionEffect.OPACITY.combine(TransitionEffect.scale({x:0.5,y:0.5})).combine(TransitionEffect.translate({y:50}))// 2. 动画参数:同样可以使用弹簧曲线!.animation({curve:curves.springMotion(0.6,0.8)}))}Button("切换显示").onClick(()=>{// animateTo 是为了让 if/else 的渲染过程也有动画animateTo({curve:curves.springMotion()},()=>{this.showCard=!this.showCard;})})

🎨 四、 显式动画 (animateTo) vs 属性动画 (.animation)

很多新手会晕:到底该用哪个?

场景推荐方式代码特征
单个组件的简单交互属性动画 (.animation)写在组件链式调用的末尾,随 State 变化自动触发。
多个组件联动 / 复杂逻辑显式动画 (animateTo)animateTo({ duration: 1000 }, () => { this.w = 200 })
组件的出现/消失转场动画 (.transition)必须配合if/elseVisibility控制。

🎯 总结

鸿蒙的动画系统并不神秘,它其实比 Android 原生的ObjectAnimator更直观。
你不需要去计算每一帧的坐标,你只需要告诉系统:

  1. 开始是什么样(State A)。
  2. 结束是什么样(State B)。
  3. 中间怎么走(Curve 曲线)。

只要你用好了curves.interpolatingSpring,你的 App 瞬间就能拥有“果冻般”的高级质感。

Next Step:
把上面的代码复制到 DevEco Studio 中。尝试修改interpolatingSpring的第 4 个参数(阻尼),将其从15改为5,看看按钮会不会像疯狂的果冻一样弹个不停!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/26 3:24:45

腾讯HY-MT1.5翻译模型:自动扩缩容设计

腾讯HY-MT1.5翻译模型:自动扩缩容设计 1. 引言 随着全球化进程的加速,高质量、低延迟的机器翻译需求日益增长。传统翻译服务在面对多语言互译、边缘部署和实时响应等场景时,往往面临性能与成本的双重挑战。为应对这一问题,腾讯推…

作者头像 李华
网站建设 2026/8/26 3:24:56

HY-MT1.5网页推理教程:快速体验多语言翻译服务

HY-MT1.5网页推理教程:快速体验多语言翻译服务 随着全球化进程的加速,高质量、低延迟的多语言翻译服务成为跨语言交流的核心需求。腾讯近期开源了其最新的混元翻译大模型系列——HY-MT1.5,包含两个版本:HY-MT1.5-1.8B 和 HY-MT1.…

作者头像 李华
网站建设 2026/8/25 4:58:54

全网最全8个AI论文工具,专科生轻松搞定毕业论文!

全网最全8个AI论文工具,专科生轻松搞定毕业论文! AI 工具如何成为专科生论文写作的得力助手 在当今信息爆炸的时代,AI 技术已经渗透到各个领域,学术写作也不例外。对于专科生来说,撰写一篇高质量的毕业论文不仅是学业的…

作者头像 李华
网站建设 2026/8/23 21:17:16

10.4 磁悬浮轴承:新型轴承概念,磁液双悬浮轴承与 无传感器磁轴承

10.4 新型轴承概念 磁悬浮轴承技术经过数十年发展,其主流结构(主动电磁轴承、永磁偏置混合轴承)与控制方法已相对成熟。然而,面向未来极端工况(如超高速、超高真空、强辐射)、更高可靠性及更低成本的需求,传统架构面临瓶颈。为此,研究者提出了多种打破常规思维的新型轴…

作者头像 李华
网站建设 2026/8/24 5:28:11

HY-MT1.5-7B高负载优化:批量翻译任务调度实战案例

HY-MT1.5-7B高负载优化:批量翻译任务调度实战案例 1. 引言:大模型驱动下的翻译系统演进 随着全球化进程加速,跨语言内容处理需求呈指数级增长。传统翻译服务在面对海量文本、多语种混杂、格式保留等复杂场景时,往往面临质量不稳…

作者头像 李华
网站建设 2026/8/25 17:09:30

HY-MT1.5-1.8B快速上手:10分钟完成镜像部署与接口测试

HY-MT1.5-1.8B快速上手:10分钟完成镜像部署与接口测试 1. 引言 随着全球化进程的加速,高质量、低延迟的翻译服务成为跨语言交流的核心需求。腾讯近期开源了混元翻译大模型1.5版本(HY-MT1.5),其中包含两个关键模型&am…

作者头像 李华