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.opacityValue0.2})})Button(淡入).onClick((){animateTo({duration:500,curve:Curve.EaseInOut},(){this.opacityValue1})})点击淡出时opacityValue从 1 渐变到 0.2持续 500ms使用EaseInOut曲线先慢后快再慢。位移动画Button(右移).onClick((){animateTo({duration:600,curve:Curve.EaseOut},(){this.offsetX60})})方块向右平移 60vpEaseOut曲线让运动先快后慢有减速感。组合复位Button(复位).onClick((){animateTo({duration:500,curve:Curve.FastOutLinearIn},(){this.opacityValue1this.offsetX0})})一个animateTo调用里同时修改多个状态变量透明度和位移会同时做过渡动画。FastOutLinearIn曲线快速开始然后线性减速。代码详解完整状态管理EntryComponentstruct BasicPropertyAnimation{StateopacityValue:number1StateoffsetX:number0// ...}只需要两个状态变量一个控制透明度一个控制水平偏移。动画目标组件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平滑过渡常见问题QanimateTo 的回调里能写异步操作吗不能。回调里只应该写状态变量的赋值操作。异步操作放在animateTo外面。Q动画还没结束又触发了新动画新动画会打断旧动画从当前值开始过渡到新目标值。不会叠加。Q怎么知道动画结束了animateTo的第一个参数支持onFinish回调animateTo({duration:500,curve:Curve.EaseInOut,onFinish:(){console.info(动画完成)}},(){this.opacityValue0.2})animateTo的回调函数里不要写非状态修改的代码比如网络请求、日志打印。它的作用是告诉框架哪些状态变量需要做动画不是通用的回调。进阶技巧链式动画在onFinish里触发下一个animateTo形成动画序列。不同属性不同时长如果需要透明度和位移用不同的动画时长可以分两次animateTo调用。延迟启动用setTimeout包裹animateTo实现延迟动画或者用animateTo的delay参数。写在最后animateTo是 ArkUI 动画系统的手动模式给你精确的触发控制。配合Curve曲线和duration时长能做出各种节奏感不同的动画效果。今天用透明度和位移入了门后面的文章会在这个基础上扩展到缩放、旋转、颜色变化等更多属性。

相关新闻

FreeRDP曝高危堆缓冲区溢出漏洞:wfreerdp客户端遭弃用,远程代码执行风险急剧上升

FreeRDP曝高危堆缓冲区溢出漏洞:wfreerdp客户端遭弃用,远程代码执行风险急剧上升

开源远程桌面协议实现FreeRDP最近爆出一记重锤。安全研究团队对外公开了完整的漏洞细节,连带概念验证代码也一并放出。这意味着全球范围内依赖这款工具进行日常远程运维的企业和个人,正面临一场实打实的安全风暴。 这个漏洞的棘手之处在于,它…

2026/7/23 22:17:18 阅读更多 →
【Springboot毕设全套源码+文档】基于springboot小型家政服务管理系统的设计与实现(丰富项目+远程调试+讲解+定制)

【Springboot毕设全套源码+文档】基于springboot小型家政服务管理系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/23 22:16:17 阅读更多 →
【Springboot毕设全套源码+文档】基于JavaWeb的图书馆管理系统的设计与实现(丰富项目+远程调试+讲解+定制)

【Springboot毕设全套源码+文档】基于JavaWeb的图书馆管理系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/23 22:16:17 阅读更多 →

最新新闻

Linux PipeWire深度解析之pw_context_new调用流程与实战(二十三)

Linux PipeWire深度解析之pw_context_new调用流程与实战(二十三)

简介: CSDN博客专家、《Android系统多媒体进阶实战》作者 博主新书推荐:《Android系统多媒体进阶实战》🚀 Android Audio工程师专栏地址: Audio工程师进阶系列【原创干货持续更新中……】🚀 Android多媒体专栏地址&a…

2026/7/23 22:23:22 阅读更多 →
【MySQL 排错】Navicat 连接 localhost 报 2002 (10061) 完整排查记录(Windows + MySQL 8.4 用户模式)

【MySQL 排错】Navicat 连接 localhost 报 2002 (10061) 完整排查记录(Windows + MySQL 8.4 用户模式)

摘要:本文记录 Windows 下 ZIP 方式安装 MySQL 8.4.10 后,使用 Navicat 连接 localhost 时出现 2002 - Cant connect to server on localhost (10061) 的完整排错过程。从现象、原理、排查命令到根因与解决方案一并整理,并补充安装阶段的常见…

2026/7/23 22:23:22 阅读更多 →
谁还在硬啃组态屏?我直接喂饭

谁还在硬啃组态屏?我直接喂饭

玩组态屏这事吧,说难不难,说简单也真有不少坑。刚入坑那会儿我也是一路踩着雷过来的,今天把几个核心知识点捋一捋,给刚上手的兄弟们省点弯路。先聊选型。很多人上来就盯着尺寸看,7寸还是10寸,其实比尺寸更重…

2026/7/23 22:23:22 阅读更多 →
C语言学习(跟b站鹏哥)

C语言学习(跟b站鹏哥)

下面开始C语言的学习,总结鹏哥C语言重点方便快速回顾复习。适用人员(小白学习c语言,考研408学习C语言,z站学习鹏哥c语言)第二课由C语言编写的为.c文件,需要先进行编译,然后进行链接成为可执行文…

2026/7/23 22:23:22 阅读更多 →
程序员高效驾驭大模型的AI导演工作流

程序员高效驾驭大模型的AI导演工作流

1. 项目概述:程序员如何高效驾驭大模型三年前我第一次接触GPT-3时,花了整整8小时才让模型输出符合需求的代码片段。如今通过系统化的方法沉淀,同样的任务只需30分钟就能完成质量更高的交付。这个转变过程让我意识到:掌握大模型就像…

2026/7/23 22:22:21 阅读更多 →
Linux PipeWire深度解析之pw_thread_loop_in_thread调用流程与实战(二十二)

Linux PipeWire深度解析之pw_thread_loop_in_thread调用流程与实战(二十二)

简介: CSDN博客专家、《Android系统多媒体进阶实战》作者 博主新书推荐:《Android系统多媒体进阶实战》🚀 Android Audio工程师专栏地址: Audio工程师进阶系列【原创干货持续更新中……】🚀 Android多媒体专栏地址&a…

2026/7/23 22:22:21 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻