尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
HarmonyOS ArkUI 属性动画完全指南:从基础概念到 animateTo 与 animation 实战
引言动画是应用开发中必不可少的部分一方面可以提升用户体验另一方面可以引导用户操作提高信息传达效率。UI 中包含开发者和用户交互时看到的各类组件属性值的变化会引起 UI 变化。如果不加动画属性变化会瞬间完成带来突兀感容易让用户失去视觉焦点动画可以在 UI 变化时添加流畅的过渡效果。本节课将系统讲解 ArkUI 属性动画的基础概念、接口使用与开发实践。核心内容动画概述与使用目的动画的作用UI 属性值变化若不加入动画会瞬间完成造成突兀感易让用户丢失视觉焦点动画可以为 UI 变化添加流畅的过渡效果。使用动画的四个核心目的使界面的过渡自然流畅。增强用户从界面获得的反馈感和互动感。在内容加载等场景中增加用户的耐心缓解等待带来的不适感。引导用户了解和操作设备。属性动画与可动画属性属性动画定义通过改变可动画属性引起 UI 产生连续视觉变化的动画效果按照动画参数逐帧驱动属性变化生成动画是 ArkUI 中最基础的动画类型。可动画属性分类属性可分为可动画属性和不可动画属性可动画属性又分为系统可动画属性和自定义可动画属性。常见系统可动画属性分类分类包含属性布局属性位置、大小、内边距、外边距、对齐方式、权重等仿射变换平移、旋转、缩放、锚点等背景背景颜色、背景模糊等内容文字大小、文字颜色图片对齐方式、模糊等前景前景颜色等外观透明度、圆角、边框、阴影等属性动画接口说明ArkUI 提供animateTo和animation两种属性动画接口都可以通过改变组件可动画属性触发界面连续变化生成属性动画。animateTo 接口语法animateTo(value: AnimateParam, event: () { // 动画的闭包函数闭包内变量改变产生的属性动画将遵循相同的动画参数 })animation 接口语法Image($r(app.media.image)) .rotate({ ... }) // 把 animation 接口加在要做属性动画的可动画属性后检测到其绑定的可动画属性发生变化就会自动添加属性动画 .animation(value: AnimateParam)animateTo 与 animation 接口对比对比维度animateToanimation生成动画方式通过变量控制可动画属性值在闭包内修改变量触发属性变化生成动画绑定在目标可动画属性后检测到属性变化自动添加动画作用范围全局显式动画可同时作用于多个组件组件级属性动画必须绑定单个组件语法结构通过闭包函数触发状态变化通过组件属性直接设置动画参数适用场景多组件同步动画或复杂动画逻辑单个组件简单属性动画如平移、旋转、缩放等动画参数 AnimateParamAnimateParam包含的核心参数参数名参数说明duration动画持续时间单位为毫秒tempo动画播放速度值越大播放越快值越小播放越慢默认值为 1.0curve动画曲线指定动画的速度变化规律delay动画延迟播放时间单位为毫秒默认不延迟iterations动画播放次数默认播放 1 次设置为-1表示无限次循环播放playMode动画播放模式默认播放完成后重头开始播放onFinish动画播放完成后的回调函数动画曲线 Curve动画曲线定义动画曲线是属性值关于时间的变化函数决定了属性变化过程中动画的运动轨迹。某一时刻曲线的斜率代表动画速度对应属性变化的快慢调整曲线可以实现动画的加速和减速效果。动画曲线和时长配合可以产生运动的韵律感。优秀动画曲线的特点连续光滑、符合用户意图、符合物理世界客观规律开发者需要根据场景选择合适的曲线。常见内置动画曲线曲线说明Smooth平滑曲线效果更符合用户认知能创造自然生动的动画效果EaseInOut表示动画以低速开始和低速结束Linear表示动画从头到尾速度保持一致开发案例实现思路案例需求实现两个动画效果点击按钮图片展开、按钮缩小再次点击按钮图片收回、按钮放大展开收合动画。点击单个图片实现图片翻转动画。展开收合动画实现思路定义状态变量控制图片的旋转角度、平移位置和缩放属性展开状态图片旋转 360 度沿 X/Y 轴平移到对应位置按钮缩放为原大小的 0.7 倍。收起状态图片旋转角度为 0、平移距离为 0按钮缩放恢复为原大小。使用animateTo通过闭包修改状态变量触发多组件同步动画。State isExpanded: boolean false; animateTo({ duration: 2000, curve: Curve.Smooth }, () { this.isExpanded !this.isExpanded; }) Image($r(app.media.image)) .rotate({ angle: this.isExpanded ? 360 : 0 }) .translate({ x: this.isExpanded ? 100 : 0, y: this.isExpanded ? 100 : 0 }) .scale({ x: this.isExpanded ? 0.7 : 1, y: this.isExpanded ? 0.7 : 1 })图片翻转动画实现思路为每个图片绑定状态变量控制旋转角度点击图片时修改变量通过animation接口绑定属性生成单个组件的翻转动画。State flipAngle: number 0; Image($r(app.media.image)) .rotate({ angle: this.flipAngle }) .animation({ duration: 1000, curve: Curve.EaseInOut }) .onClick(() { this.flipAngle this.flipAngle 0 ? 180 : 0; })总结本节课系统讲解了 ArkUI 属性动画的核心知识动画基础概念为 UI 属性变化添加流畅过渡效果避免突兀感。使用动画的四个核心目的为过渡自然流畅、增强反馈感、缓解等待不适感、引导用户操作。属性动画与可动画属性通过改变可动画属性逐帧驱动 UI 产生连续视觉变化。系统可动画属性涵盖布局属性、仿射变换、背景、内容、前景、外观六大类。两种属性动画接口animateTo全局显式动画通过闭包修改状态变量触发多组件同步动画适合复杂动画逻辑。animation组件级属性动画绑定单个组件属性检测到变化自动添加动画适合简单平移、旋转、缩放等效果。动画参数 AnimateParam包含duration时长、tempo速度、curve曲线、delay延迟、iterations次数、playMode模式、onFinish完成回调等配置项。动画曲线 Curve属性值关于时间的变化函数决定运动轨迹与速度变化。常见内置曲线包括Smooth平滑、EaseInOut头尾低速、Linear匀速。
RELATED

相关推荐

HarmonyOS 状态管理 V2 完全指南:从 @Local 到 @ObservedV2

HarmonyOS 状态管理 V2 完全指南:从 @Local 到 @ObservedV2

引言数据是声明式 UI 开发的核心,一切 UI 的变化都是由数据驱动的。其中,会随着用户交互、时间推移或外部事件而动态变化,且会影响界面效果的数据,我们称之为状态。对这些状态进行统一的定义、追踪、更新和共享,这一系…

📅 2026/9/15 14:03:49
WPF与Unity进程间通信与窗口嵌入实战:工业仿真与数字孪生集成方案

WPF与Unity进程间通信与窗口嵌入实战:工业仿真与数字孪生集成方案

1. 项目概述与核心价值最近在做一个工业仿真项目,客户要求在一个成熟的WPF上位机软件里,嵌入一个用Unity做的3D可视化模块,并且要通过WPF界面上的按钮,实时控制这个3D场景里模型的旋转、颜色、显隐等属性。这个需求听起来简单&…

📅 2026/10/16 18:40:06
Unity后处理技术:从原理到实战的视觉增强指南

Unity后处理技术:从原理到实战的视觉增强指南

1. 后处理技术概述:Unity视觉增强的核心手段后处理(Post-Processing)是现代游戏引擎中实现电影级画质的关键技术链。在Unity中,它指的是在摄像机完成场景渲染后,对最终图像进行的全屏特效处理。不同于传统材质着色器对…

📅 2026/10/10 21:43:53
MORE NEWS

更多资讯

📰

如何主导一次技术选型(框架、数据库、中间件)

如何主导一次技术选型(框架、数据库、中间件) 技术选型是工程师从"执行者"走向"决策者"的关键动作。做得好,团队少走三年弯路;做得差,你会用未来两年给今天的冲动还债。下面是一套可落地的方法论。 一、先搞清楚:技术选型到底在选什么 大多数人以为…

📰

4.3.1 对象与创建:只有文件,没有页

4.3 论证了采用 shmem 文件作为后备的理由:内容存放于文件中,helper 仅按需获取页,使用完毕后归还页。本节先给出 helper 的核心数据结构 struct drm_gem_shmem_object 的全貌,再讨论 drm_gem_shmem_create() 创建对象时完成的工作…

📰

华为云码道实战:用 Vue 3 + Three.js 实现六面祝福宫灯与 GIF 导出

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

把火灵珠放进 ABAP 系统,得到的会是什么

冷链仓库里有一批药品,传感器每隔几分钟上传一次温度。上午十点,某个库位的读数越过预警线;再过一段时间,另一条读数越过了必须拦截出库的界限。此时,仓库主管需要看到异常,出库流程需要知道货物能否放行,后台还需要保存处理记录。倘若这三处各写一套温度判断,迟早会出…

📰

基于Java的非遗文化交流与分享网站(Java+SSM+MySQL)| 毕业设计 源码+论文+完整教程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

【中国方言题库|13】HarmonyOS ArkTS 应用启动链路实战:从 EntryAbility 到首屏加载保持窗口与路由稳定

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬