HarmonyOS7 脉冲动画:循环缩放效果的实现与踩坑
文章目录前言反面教材正确姿势状态定义脉冲动画元素核心循环逻辑停止脉冲原理解析为什么放大用 EaseOut缩小用 EaseIn透明度配合的妙处实践清单写在最后前言有一种动画效果你肯定见过——微信语音消息旁边那个绿色圆圈一直在放大缩小像在呼吸一样。这叫脉冲动画Pulse Animation常见于消息提醒、定位按钮、录音状态指示等场景。脉冲动画看起来简单不就是放大再缩小吗但真正做起来有几个细节容易踩坑。今天就来聊聊在 ArkUI 里怎么实现一个靠谱的脉冲动画。反面教材先看一个典型的错误写法// 错误直接用 .animation 的 iterations 参数Column().scale({x:this.pulseScale,y:this.pulseScale}).animation({duration:600,iterations:-1,// 无限循环curve:Curve.EaseInOut})这个写法理论上没问题.animation的iterations: -1确实可以让动画无限循环。但有个致命问题——你没法在循环过程中动态控制动画的暂停和恢复。一旦跑起来就停不下来了。所以我们需要用setTimeout手动管理循环。正确姿势状态定义EntryComponentstruct PulseAnimation{StatepulseScale:number1StatepulseOpacity:number1StateisPulsing:booleanfalseprivatepulseTimer:number-1build(){Column(){// ...}}}isPulsing是一个控制标记用来决定循环是否继续。脉冲动画元素Stack(){Column().width(60).height(60).backgroundColor(#4D96FF).borderRadius(30).scale({x:this.pulseScale,y:this.pulseScale}).opacity(this.pulseOpacity).animation({duration:600,curve:Curve.EaseInOut})Text(P).fontSize(22).fontColor(#FFFFFF).fontWeight(FontWeight.Bold)}.width(80).height(80)用Stack把脉冲圆圈和文字叠在一起。圆圈做动画文字保持不动——这样视觉效果是圆圈在脉冲文字不动。核心循环逻辑Button(开始脉冲).onClick((){if(this.isPulsing)returnthis.isPulsingtrueconstpulse(){if(!this.isPulsing){this.pulseScale1this.pulseOpacity1return}// 阶段1放大 变透明animateTo({duration:600,curve:Curve.EaseOut},(){this.pulseScale1.3this.pulseOpacity0.5})// 阶段2缩小 恢复不透明setTimeout((){animateTo({duration:600,curve:Curve.EaseIn},(){this.pulseScale1this.pulseOpacity1})// 延迟200ms后开始下一轮if(this.isPulsing)setTimeout(pulse,200)},600)}pulse()})这个递归函数的执行流程检查isPulsing标记如果为false就停下来并恢复初始状态用animateTo执行放大 变透明600ms等 600ms 后用animateTo执行缩小 恢复600ms再等 200ms 的间隔然后递归调用自身每一轮脉冲的总时长是600 600 200 1400ms。停止脉冲Button(停止脉冲).onClick((){this.isPulsingfalse})停止时只需要把isPulsing设为false。当前一轮动画跑完后递归函数检查到标记变化就会自动退出。原理解析为什么放大用 EaseOut缩小用 EaseIn这不是随便选的放大阶段用Curve.EaseOut快速开始放大然后慢慢减速到最大。视觉上像是弹出去缩小阶段用Curve.EaseIn慢慢开始缩小然后加速回到原位。视觉上像是弹回来这两段曲线拼在一起就形成了一个自然的弹性脉冲效果。透明度配合的妙处只做缩放的话脉冲效果看起来像个弹簧。加上透明度变化后放大时变透明缩小时恢复不透明视觉上更像一个发光脉冲或者雷达扫描。实践清单实现脉冲动画时的检查清单用isPulsing标记控制循环不要用iterations: -1放大和缩小用不同的动画曲线配合透明度变化增加质感停止脉冲时恢复初始状态防止重复启动if (this.isPulsing) return写在最后脉冲动画的核心就是用递归setTimeout来手动管理循环而不是依赖.animation的iterations参数。虽然代码多几行但换来了完全的控制权——想停就停想变就变。这种手动循环的思路不只适用于脉冲动画后面聊到的呼吸灯、加载动画也会用到同样的模式。

相关新闻

HarmonyOS7 页面切换动画:自己手搓一个 Tab 过渡效果

HarmonyOS7 页面切换动画:自己手搓一个 Tab 过渡效果

文章目录前言为什么不用原生 Tabs核心实现状态定义Tab 栏的实现内容区域滑动方向的判断优化建议写在最后前言 ArkUI 自带的 Tabs 组件切换页面时是有默认过渡效果的,但有时候设计师给的方案比较特殊,默认的 Tabs 满足不了需求。这时候就得自己实现页面切…

2026/10/12 19:35:28 阅读更多 →
LinkSwift:九大网盘直链解析的终极技术实现指南

LinkSwift:九大网盘直链解析的终极技术实现指南

LinkSwift:九大网盘直链解析的终极技术实现指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 /…

2026/10/7 16:31:02 阅读更多 →
FigmaCN中文翻译插件:3分钟让Figma界面全中文化,设计师工作效率提升50%以上

FigmaCN中文翻译插件:3分钟让Figma界面全中文化,设计师工作效率提升50%以上

FigmaCN中文翻译插件:3分钟让Figma界面全中文化,设计师工作效率提升50%以上 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma的全英文界面而烦恼吗&am…

2026/10/8 14:02:17 阅读更多 →

最新新闻

问题:ubuntu与linux开发板互ping

问题:ubuntu与linux开发板互ping

一、问题原理要解决ubuntu与开发板互ping的问题,就是要使ubuntu和开发板在同一个网段上面。本次问题解决环境:开发板 和 windows 均通过wifi的方式连接网络。二、解决方法1、首先将ubuntu设置成桥接模式状态栏上方点击 虚拟机,点击 设置&…

2026/10/14 3:05:32 阅读更多 →
2026年全国3D溜溜网云渲染速度表现及选购参考指南

2026年全国3D溜溜网云渲染速度表现及选购参考指南

云渲染服务核心评估维度与行业标准当前3D设计领域数字化服务需求持续增长,云渲染服务已成为设计师提升出图效率的核心工具,不同平台的服务能力差异较大,明确统一的评估标准可帮助用户降低选型成本。对于同时承接3个家装项目、自有设备单张4K效…

2026/10/14 3:05:32 阅读更多 →
Chat2DB:开源AI数据库终端,自然语言转SQL的工程实践

Chat2DB:开源AI数据库终端,自然语言转SQL的工程实践

简介:Chat2DB是一款面向软件开发者的AI驱动型开源数据库管理工具,专为降低SQL使用门槛而设计,特别适合非数据库专家、初级开发者及数据分析师快速开展数据库查询、分析与迁移工作。资源包为项目源码压缩包(zip格式)&am…

2026/10/14 3:05:32 阅读更多 →
MySQL索引优化:从B+树原理到慢查询实战

MySQL索引优化:从B+树原理到慢查询实战

做后端开发这几年,最常被拉到群里去救火的场景,十有八九是数据库慢查询。系统跑得好好的,突然某天接口变慢、CPU飙高,一看日志全是SELECT走了全表扫描,几百万行的表一次查询几秒钟才回来。这种时候,十次里有…

2026/10/14 3:05:32 阅读更多 →
RGF_CJ 全局函数全解析:从应用生命周期、系统定时器到窗口与指针互操作

RGF_CJ 全局函数全解析:从应用生命周期、系统定时器到窗口与指针互操作

图形学桌面应用 【免费下载链接】RGF_CJ RGF是仓颉Windows系统下的通用渲染框架(兼应用开发框架)。RGF仓颉版(后续简称"RGF")基于RGF(C/C版)封装优化而来。RGF为开发者提供轻量化、安全、高性能以及高度一致性的2D渲染能…

2026/10/14 3:05:32 阅读更多 →
Python爬虫实战:手机APP数据抓取与解析全流程

Python爬虫实战:手机APP数据抓取与解析全流程

简介:这份PDF资料面向具备Python基础、对网络请求与爬虫开发感兴趣的技术爱好者与研发工程师,围绕手机APP数据传输的抓取与解析展开,重点讲解如何借助Fiddler抓包定位登录与话题接口,再通过urllib2构造HTTP请求、携带Header与表单…

2026/10/14 3:04:31 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/12 18:11:17 阅读更多 →