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

HarmonyOS7 属性动画基础:animateTo 驱动透明度与位移动画

文章目录

    • 前言
    • 基础概念
      • animateTo vs .animation()
    • 从简到繁
      • 透明度动画
      • 位移动画
      • 组合复位
    • 代码详解
      • 完整状态管理
      • 动画目标组件
      • 按钮控制面板
      • 实时数值显示
    • Curve 曲线对比
    • 常见问题
    • 进阶技巧
    • 写在最后

前言

ArkUI 有两种动画模式:声明式动画(.animation())和显式动画(animateTo)。前者适合"状态变化自动过渡"的场景,后者适合"在特定时刻触发动画"的场景。今天聊animateTo的基础用法,用透明度和位移两个属性来入门。

基础概念

animateTo vs .animation()

特性.animation()animateTo
触发方式状态变化自动触发手动调用触发
代码位置组件属性事件回调中
适用场景属性跟随状态变化点击按钮触发动画
多次触发每次值变化都触发只在调用时触发

animateTo的函数签名:

animateTo({duration:500,curve:Curve.EaseInOut},()=>{// 在这里修改状态变量,修改会走动画})

第一个参数是动画配置,第二个是回调函数。回调里修改的状态变量会以动画方式过渡到新值。

从简到繁

透明度动画

Button('淡出').onClick(()=>{animateTo({duration:500,curve:Curve.EaseInOut},()=>{this.opacityValue=0.2})})Button('淡入').onClick(()=>{animateTo({duration:500,curve:Curve.EaseInOut},()=>{this.opacityValue=1})})

点击"淡出"时,opacityValue从 1 渐变到 0.2,持续 500ms,使用EaseInOut曲线(先慢后快再慢)。

位移动画

Button('右移').onClick(()=>{animateTo({duration:600,curve:Curve.EaseOut},()=>{this.offsetX=60})})

方块向右平移 60vp,EaseOut曲线让运动"先快后慢",有减速感。

组合复位

Button('复位').onClick(()=>{animateTo({duration:500,curve:Curve.FastOutLinearIn},()=>{this.opacityValue=1this.offsetX=0})})

一个animateTo调用里同时修改多个状态变量,透明度和位移会同时做过渡动画。FastOutLinearIn曲线快速开始然后线性减速。

代码详解

完整状态管理

@Entry@Componentstruct BasicPropertyAnimation{@StateopacityValue:number=1@StateoffsetX:number=0// ...}

只需要两个状态变量,一个控制透明度,一个控制水平偏移。

动画目标组件

Column().width(80).height(80).backgroundColor('#6BCB77').borderRadius(12).opacity(this.opacityValue).translate({x:this.offsetX})

.opacity().translate()都是可动画属性——框架知道怎么在两个值之间做插值。

按钮控制面板

Row({space:12}){Button('淡出').onClick(()=>{/* ... */})Button('淡入').onClick(()=>{/* ... */})Button('右移').onClick(()=>{/* ... */})Button('复位').onClick(()=>{/* ... */})}.width('100%').justifyContent(FlexAlign.SpaceEvenly).margin({top:12})

四个按钮一字排开,用Row({ space: 12 })设置间距,SpaceEvenly均匀分布。

实时数值显示

Text(`当前透明度:${this.opacityValue.toFixed(1)}| 偏移:${this.offsetX}vp`).fontSize(12).fontColor('#999999').margin({top:12})

动画过程中,数值是连续变化的。toFixed(1)保留一位小数,显示更整洁。

Curve 曲线对比

这个案例用到了三种曲线,对比一下:

Curve运动特点视觉效果
EaseInOut先慢后快再慢最自然,适合大多数过渡
EaseOut先快后慢有减速感,适合"停下来"
FastOutLinearIn快速启动,线性减速有点"冲"的感觉

选曲线的原则:

  • 入场/出现:用EaseOut(快速出现,慢慢停稳)
  • 出场/消失:用EaseIn(慢慢开始,快速消失)
  • 状态切换:用EaseInOut(平滑过渡)

常见问题

Q:animateTo 的回调里能写异步操作吗?

不能。回调里只应该写状态变量的赋值操作。异步操作放在animateTo外面。

Q:动画还没结束又触发了新动画?

新动画会"打断"旧动画,从当前值开始过渡到新目标值。不会叠加。

Q:怎么知道动画结束了?

animateTo的第一个参数支持onFinish回调:

animateTo({duration:500,curve:Curve.EaseInOut,onFinish:()=>{console.info('动画完成')}},()=>{this.opacityValue=0.2})

animateTo的回调函数里不要写非状态修改的代码(比如网络请求、日志打印)。它的作用是"告诉框架哪些状态变量需要做动画",不是通用的回调。

进阶技巧

  1. 链式动画:在onFinish里触发下一个animateTo,形成动画序列。

  2. 不同属性不同时长:如果需要透明度和位移用不同的动画时长,可以分两次animateTo调用。

  3. 延迟启动:用setTimeout包裹animateTo实现延迟动画,或者用animateTodelay参数。

写在最后

animateTo是 ArkUI 动画系统的"手动模式",给你精确的触发控制。配合Curve曲线和duration时长,能做出各种节奏感不同的动画效果。今天用透明度和位移入了门,后面的文章会在这个基础上扩展到缩放、旋转、颜色变化等更多属性。

http://www.jsqmd.com/news/1250446/

相关文章:

  • 神秘分治 学习笔记
  • ATS: Adaptive Token Sampling for Efficient Vision Transformers 解读
  • 天道电视剧观后感2
  • Windows/macOS 通用 OpenClaw 2.7.9,本地存储 AI 智能体实操步骤
  • 2026北京亲子教育服务企业做GEO服务商怎么选?五家机构深度测评与靠谱选型指南 - 科技快讯
  • 北京汽车后市场服务企业做GEO服务商怎么选?2026本地靠谱选型指南与深度测评 - 科技快讯
  • 2026 图片水印怎么去掉免费 视频去水印在线工具免费盘点 - 免费软件工具方法教程
  • 白帽SEO服务商机构排名:白帽技术流派解析与2026白帽机构TOP推荐 - GEORANK
  • 招聘网站之外,留学生还能去哪找岗位?|蒸汽求职分享
  • 北京财税服务企业做GEO服务商怎么选?2026年深度测评与靠谱选型指南 - 科技快讯
  • 自动化专业毕业能干什么?制造业、控制、软件、数据怎么选
  • 2026在线去水印免费工具有哪些 用了三年的方法教程 - 免费软件工具方法教程
  • AI 时代,普通人如何用「提问」逼近天才的认知密度——从杨植麟本科演讲说起
  • 7.23小记
  • 前端该如何选择图片的格式?
  • 同城便民,大连跨省长途返乡救护车出租,卧床老人转运注意事项汇总 - 资讯快报
  • 【题解】P2791 幼儿园篮球题
  • iconfont是什么?有什么优缺点?
  • Recruiter初筛到底在判断什么?|蒸汽求职分享
  • 骨架屏库:内容加载前的占位图组件(245)
  • 从手工填报到实时决策:AI报表自动化实施路线图(含POC验证清单+ROI测算表)
  • 椰林海鲜码头企业新愿景是什么?:崇实永守初心 - 18102756859
  • HarmonyOS7 手势综合展示:六种手势类型一网打尽 + Grid 数据看板
  • vscode C++ qmake 配置问题
  • 什么是双向鉴权?从一个随机数说起
  • 青岛专业工程律师于臻:政府及国企拖欠工程款应如何依法处理 - 新思维商业观察
  • 白帽SEO服务商平台推荐:白帽技术趋势2026与合规优化机构盘点 - GEORANK
  • zynq高频小数据量PS闭环的三个实验-第3课:Linux驱动测试
  • 2026食品塑料容器行业格局调研|京津冀优质厂商综合实力分析分析,密封塑料桶/大批量注塑加工,食品塑料容器源头厂家推荐 - 品牌推荐师
  • 51单片机从零到实战(13)——毕设常用ADC模块