news 2026/5/8 11:56:33

HarmonyOS 6 ArkUI 属性动画(.animation)使用文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HarmonyOS 6 ArkUI 属性动画(.animation)使用文档

文章目录

    • 属性动画(.animation)核心
      • 1. 动画定义
      • 2. 适用场景
      • 3. 核心配置项
    • 代码逐模块解析
      • 1 状态变量定义
      • 2 动画 1:宽高尺寸动画(change size)
      • 3 动画 2:旋转角度动画(change rotate angle)
    • 运行效果
    • 完整代码
    • 总结

属性动画(.animation)核心

1. 动画定义

属性动画是 ArkUI 内置的隐式动画能力,通过.animation()方法绑定到组件上。
当组件绑定的状态变量发生变化时(宽、高、角度、颜色等),系统自动完成过渡动画,无需手动控制帧刷新。

2. 适用场景

  • 组件宽高、尺寸变化
  • 旋转、位移、缩放、透明度
  • 背景色、字体大小等 UI 属性变化
  • 点击、长按、页面切换等交互过渡

3. 核心配置项

参数说明
duration动画时长,单位:毫秒
curve动画曲线(速度变化规律)
delay动画延迟执行时间
iterations动画播放次数,-1表示无限循环
playMode动画播放模式(正播/倒播/交替)
expectedFrameRateRange期望帧率范围,优化流畅度

代码逐模块解析

1 状态变量定义

@StatewidthSize:number=250@StateheightSize:number=100@StaterotateAngle:number=0@Stateflag:boolean=true
  • @State装饰的变量为响应式状态
  • 变量变化 → 触发 UI 更新 → 自动触发.animation动画
  • 是属性动画的核心驱动源

2 动画 1:宽高尺寸动画(change size)

Button('change size').onClick(()=>{if(this.flag){this.widthSize=150this.heightSize=60}else{this.widthSize=250this.heightSize=100}this.flag=!this.flag}).width(this.widthSize).height(this.heightSize).animation({duration:2000,curve:Curve.EaseOut,iterations:3,playMode:PlayMode.Normal})

3 动画 2:旋转角度动画(change rotate angle)

Button('change rotate angle').onClick(()=>{this.rotateAngle=90}).rotate({angle:this.rotateAngle}).animation({duration:1200,curve:Curve.Friction,delay:500,iterations:-1,playMode:PlayMode.Alternate,expectedFrameRateRange:{min:20,max:120,expected:90,}})

运行效果

  1. 点击 change size

    • 按钮在 150×60 和 250×100 之间切换
    • 平滑过渡,播放 3 次后停止
  2. 点击 change rotate angle

    • 延迟 500ms 开始旋转
    • 在 0° ~ 90° 之间无限来回旋转
    • 动画流畅,高帧率优化


完整代码

// xxx.ets@Entry@Componentstruct AttrAnimationExample{@StatewidthSize:number=250@StateheightSize:number=100@StaterotateAngle:number=0@Stateflag:boolean=truebuild(){Column(){Button('change size').onClick(()=>{if(this.flag){this.widthSize=150this.heightSize=60}else{this.widthSize=250this.heightSize=100}this.flag=!this.flag}).margin(30).width(this.widthSize).height(this.heightSize).animation({duration:2000,curve:Curve.EaseOut,iterations:3,playMode:PlayMode.Normal})Button('change rotate angle').onClick(()=>{this.rotateAngle=90}).margin(50).rotate({angle:this.rotateAngle}).animation({duration:1200,curve:Curve.Friction,delay:500,iterations:-1,// 设置-1表示动画无限循环playMode:PlayMode.Alternate,expectedFrameRateRange:{min:20,max:120,expected:90,}})}.width('100%').margin({top:20})}}

总结

  1. .animation() 必须绑定在组件上
    动画作用于当前组件,不影响兄弟/父组件。

  2. 只有 @State 变量变化才能触发动画
    普通变量修改不会驱动动画执行。

  3. iterations: -1 代表无限循环
    是官方推荐的常驻动画用法。

  4. playMode: Alternate 实现往返动画
    无需手动反向设置属性,系统自动完成。

  5. expectedFrameRateRange 为高级优化项
    用于提升动画流畅度,降低性能消耗。

如果这篇文章对你有帮助,欢迎点赞、收藏、关注,你的支持是持续创作的动力

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

快速开始:5分钟在 Windows 上安装 ungoogled-chromium

快速开始:5分钟在 Windows 上安装 ungoogled-chromium 【免费下载链接】ungoogled-chromium-windows Windows packaging for ungoogled-chromium 项目地址: https://gitcode.com/gh_mirrors/un/ungoogled-chromium-windows ungoogled-chromium 是一款专注于隐…

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

MetaboAnalystR 4.0:如何在R环境中轻松完成代谢组学分析?

MetaboAnalystR 4.0:如何在R环境中轻松完成代谢组学分析? 【免费下载链接】MetaboAnalystR R package for MetaboAnalyst 项目地址: https://gitcode.com/gh_mirrors/me/MetaboAnalystR 代谢组学研究面临的最大挑战之一就是数据处理和生物信息学分…

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

免费文档下载终极指南:30+平台一键下载完整解决方案

免费文档下载终极指南:30平台一键下载完整解决方案 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决…

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

Newton与MuJoCo对比:性能与功能的全面测评

Newton与MuJoCo对比:性能与功能的全面测评 【免费下载链接】newton An open-source, GPU-accelerated physics simulation engine built upon NVIDIA Warp, specifically targeting roboticists and simulation researchers. 项目地址: https://gitcode.com/GitHu…

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

终极云安全指南:Learn to Cloud Phase 5 完整解决方案详解

终极云安全指南:Learn to Cloud Phase 5 完整解决方案详解 【免费下载链接】learn-to-cloud A courseware built on the belief that anyone can learn foundational cloud engineering skills with the right guide and discipline 项目地址: https://gitcode.co…

作者头像 李华