当前位置: 首页 > news >正文

HarmonyNext动画大全02-显式动画

HarmonyOS NEXT显式动画详解

1. 核心接口

显式动画通过animateTo接口实现,主要特点包括:

  • 触发方式:需主动调用接口触发动画

  • 参数配置

    animateTo({duration: 1000,  // 动画时长(ms)curve: Curve.Ease, // 动画曲线delay: 200,     // 延迟时间iterations: 3,  // 播放次数playMode: PlayMode.Normal // 播放模式
    }, () => {// 状态变化代码
    })
    
  • 支持能力:从API version 7开始支持,API 11起支持元服务

2. 动画曲线类型

文档中详细列出了12种动画曲线:

曲线类型效果描述
Linear匀速运动
Ease缓入缓出
EaseIn加速启动
EaseOut减速停止
Spring弹性效果
3. 典型应用场景
  1. 组件状态变化

    animateTo({duration: 500}, () => {this.widthSize = 150;this.heightSize = 60;
    })
    
  2. 转场动画

    • 页面跳转时添加位移/透明度动画
    • 组件出现/消失时的渐变效果
  3. 手势交互反馈

    .onTouch((event) => {animateTo({duration: 100}, () => {this.scaleValue = event.type === TouchType.Down ? 0.9 : 1})
    })
    
4. 性能优化建议
  1. 合并动画

    // 推荐:合并相同参数的动画
    animateTo(param, () => {this.prop1 = newVal;this.prop2 = newVal;
    })// 避免:分开执行多个animateTo
    
  2. 帧率控制

    animateTo({expectedFrameRateRange: {min: 30,max: 60,expected: 45}
    }, () => {...})
    
  3. 注意事项

    • 避免在aboutToAppear/aboutToDisappear中使用
    • 复杂动画建议使用关键帧动画替代
    • 卡片中动画时长不得超过1000ms
5. 特殊能力
  1. 立即执行模式

    animateToImmediately({...}, () => {...})
    
    • 跳过VSync等待直接执行
    • 适用于需要即时反馈的场景
  2. UI上下文绑定

    this.getUIContext()?.animateTo({...}, () => {...})
    
    • 解决多实例场景下的上下文问题
6. 完整示例
@Entry
@Component
struct AnimationExample {@State rotateAngle: number = 0;build() {Column() {Button('旋转').rotate({ angle: this.rotateAngle }).onClick(() => {animateTo({duration: 1000,curve: Curve.Spring}, () => {this.rotateAngle = 90;})})}}
}

该文档内容显示,HarmonyOS NEXT的显式动画系统提供了丰富的参数配置和优化手段,开发者可以通过合理使用这些接口实现流畅的UI动效,同时保证性能表现。

http://www.lqws.cn/news/512983.html

相关文章:

  • 从数据到决策:UI前端如何利用数字孪生技术提升管理效率?
  • 计算机网络 网络层:数据平面(二)
  • LeetCode 142题解 | 环形链表Ⅱ
  • 【MCP服务】蓝耘元生代 | MCP平台:部署时间服务器MCP,开启大模型交互新体验
  • [架构之美]Redis客户端命令指南
  • 左神算法之二叉树最大路径和问题
  • RedisVL EmbeddingsCache深度实践与最佳指南
  • LangGraph--基础学习(Human-in-the-loop 人工参与深入学习2)
  • 在智慧教育行业中,OPS插拔式电脑启到什么作用
  • 【沉浸式解决问题】微服务子模块引入公共模块的依赖后无法bean未注入
  • 磁悬浮轴承温度漂移克星:三招实现精准控制
  • 桌面小屏幕实战课程:DesktopScreen 9 GPIO
  • 轻巧灵动,智启未来 ——Kinova Gen3 Lite 机器人轻松解锁各行业自动化新姿势
  • 集成学习基础:Bagging 原理与应用
  • 多模态大模型(从0到1)
  • CRMEB PHP多门店版v3.2.1系统全开源+Uniapp前端+搭建教程
  • 【stm32】标准库学习——USART串口
  • 2023年全国青少年信息素养大赛Python 复赛真题——玩石头游戏
  • 大模型时代的创业机遇
  • 左神算法之双集合平均值优化操作的最大次数
  • SIAM-2011《Weighted Graph Compression for Parameter-free Clustering With PaCCo》
  • 【基础篇-消息队列】—— 如何实现单个队列的并行消费及如何保证消息的严格顺序
  • 爬取小红书相关数据导入到excel
  • SpringCloud系列(35)--使用HystrixDashboard进行服务监控
  • 《汇编语言:基于X86处理器》第4章 数据传送、寻址和算术运算(2)
  • 行为验证码 AJ-Captcha 使用文档
  • Golang Kratos 系列:领域层model定义是自洽还是直接依赖第三方(三)
  • C++字符串的行输入
  • MySQL之SQL性能优化策略
  • 《仿盒马》app开发技术分享-- 兑换列表展示(68)