HarmonyOS7 宽度动画与进度条:animateTo 驱动百分比宽度变化
文章目录前言效果展示布局方案代码详解状态变量进度条组件百分比数字控制按钮数字滚动动画进阶样式渐变色进度条条纹动画分段进度条常见问题写在最后前言进度条是 UI 里最常见的动画场景之一——下载进度、上传进度、表单填写完成度。ArkUI 里做进度条动画有个很巧的方式用width百分比配合animateTo框架自动在两个百分比之间做过渡动画。今天来实现一个带按钮控制的进度条把宽度动画和 Stack 布局结合起来。效果展示一个圆角进度条底部有 25%、50%、75%、100% 四个按钮。点击按钮后进度条平滑填充到对应比例中间显示百分比数字。布局方案进度条的布局用Stack叠放两层┌──────────────────────────────────┐ │ [底层] 灰色背景条100%宽 │ │ [顶层] 蓝色进度条N%宽 │ └──────────────────────────────────┘底层是固定宽度的灰色条顶层是动态宽度的彩色条。两层都用borderRadius(15)做圆角高度 30 的一半。代码详解状态变量EntryComponentstruct WidthProgressBar{StatebarWidth:number0StatetargetPercent:number0// ...}barWidth驱动进度条的宽度百分比targetPercent记录目标值用于显示数字。进度条组件Stack({alignContent:Alignment.Start}){// 底层灰色背景Column().width(100%).height(30).backgroundColor(#E8E8E8).borderRadius(15)// 顶层蓝色进度Column().width(${this.barWidth}%).height(30).backgroundColor(#4D96FF).borderRadius(15).animation({duration:800,curve:Curve.EaseInOut})}.width(100%)几个细节值得注意Alignment.StartStack 默认居中对齐但进度条需要从左边开始填充所以设为Start左对齐。宽度用百分比字符串${this.barWidth}%生成50%这样的字符串。ArkUI 的width支持百分比值会自动按父容器宽度计算。animation声明式动画barWidth变化时宽度自动做 800ms 的EaseInOut过渡。百分比数字Text(${this.targetPercent}%).fontSize(20).fontWeight(FontWeight.Bold).fontColor(#4D96FF).margin({top:12}).textAlign(TextAlign.Center).width(100%)居中显示当前进度百分比。注意这个数字是瞬切的——targetPercent直接赋值没有做动画。如果想要数字也平滑变化需要额外的处理。控制按钮Row({space:8}){ForEach([25,50,75,100],(val:number){Button(${val}%).onClick((){this.targetPercentvalanimateTo({duration:800,curve:Curve.EaseInOut},(){this.barWidthval})})})}.width(100%).justifyContent(FlexAlign.SpaceEvenly).margin({top:16})用ForEach遍历[25, 50, 75, 100]数组为每个值生成一个按钮。点击时同时更新targetPercent瞬切和barWidth带动画。数字滚动动画如果想让百分比数字也平滑变化从 25 滚动到 75可以用定时器模拟Button(50%).onClick((){consttarget50animateTo({duration:800,curve:Curve.EaseInOut},(){this.barWidthtarget})// 数字滚动constintervalsetInterval((){if(this.targetPercenttarget){this.targetPercent}elseif(this.targetPercenttarget){this.targetPercent--}else{clearInterval(interval)}},16)// 约 60fps})每 16ms 更新一次数字800ms 内从旧值滚动到新值。进阶样式渐变色进度条Column().width(${this.barWidth}%).height(30).linearGradient({angle:90,colors:[[#4D96FF,0],[#6BCB77,1]]}).borderRadius(15)进度条从左到右做蓝绿渐变比纯色更有设计感。条纹动画Column().width(${this.barWidth}%).height(30).backgroundColor(#4D96FF).backgroundImageSize({width:30,height:30}).borderRadius(15)配合backgroundImage和backgroundPosition的动画可以做出 iOS 风格的条纹进度条。分段进度条把进度条分成多段每段颜色不同范围颜色含义0~30%红色危险30~70%橙色警告70~100%绿色安全常见问题Q宽度用百分比和用数值有什么区别百分比值50%是相对于父容器宽度的数值100是绝对 vp 值。做进度条用百分比更方便因为不需要知道父容器的具体宽度。Q为什么进度条回退时也有动画animateTo不管是从大到小还是从小到大变化都会做过渡动画。如果不想回退有动画可以在回退时不调animateTo直接赋值。800ms 的进度条动画时长在大多数场景都合适。如果是实时进度比如下载进度不应该用animateTo而是直接更新值——因为进度值本身就在高频变化每次变化都触发 800ms 动画会导致严重的延迟。写在最后宽度动画配合百分比值是做进度条的最简方案。Stack叠放两层 .animation()声明式动画代码不到 20 行就能做出一个带过渡效果的进度条。关键是要用Alignment.Start让进度条从左开始填充不然默认居中对齐会变成中间向两边扩展的效果。

相关新闻

【黑金云课堂】FPGA技术教程Vitis开发:SD卡WAV文件读取音频播放实验

【黑金云课堂】FPGA技术教程Vitis开发:SD卡WAV文件读取音频播放实验

基于FPGA的简易音乐播放器实验 一、实验概述与技术基础 本实验基于 FPGA 纯硬件逻辑实现无操作系统的简易音乐播放器,通过 SPI 接口读取 SD 卡数据,以裸扇区搜索方式定位 WAV 音频文件,最终驱动 WM8731 音频编解码芯片完成实时播放。方案具备…

2026/7/23 22:18:19 阅读更多 →
AI 对话中的 Markdown 渲染:安全解析与代码高亮的前端实践

AI 对话中的 Markdown 渲染:安全解析与代码高亮的前端实践

AI 对话中的 Markdown 渲染&#xff1a;安全解析与代码高亮的前端实践 一、模型输出原始文本的那一刻&#xff0c;危险就开始了 模型生成到一半突然吐出一段 </div><script>alert(1)</script>。前端没消毒直接 innerHTML 注入&#xff0c;整个对话页弹满警告…

2026/7/23 22:18:19 阅读更多 →
HarmonyOS7 弹簧弹性动画:Curve.FastOutSlowIn 实现弹性回弹效果

HarmonyOS7 弹簧弹性动画:Curve.FastOutSlowIn 实现弹性回弹效果

文章目录前言效果展示实现原理Curve.FastOutSlowIn圆角变化的"形变"效果代码详解状态变量动画组件弹簧右移弹簧回弹弹性缩放全部恢复真正的弹簧动画常见问题写在最后前言 弹簧动画是一种"物理感"很强的动画效果——方块移动到目标位置后不是直接停住&…

2026/7/23 22:18:19 阅读更多 →

最新新闻

新手写小说少走 90% 的弯路:AI 工具正确用法,从选题到投稿全流程指南

新手写小说少走 90% 的弯路:AI 工具正确用法,从选题到投稿全流程指南

很多人心里都藏着一个写小说的念头&#xff0c;但真正能写完、能签约的人少之又少。不是没有才华&#xff0c;而是新手太容易踩进各种误区&#xff1a;题材选不对&#xff0c;大纲写不好&#xff0c;开头留不住人&#xff0c;写着写着就跑偏&#xff0c;最后折腾半天没成果&…

2026/7/23 22:24:22 阅读更多 →
ChatGPT、Codex、Plus与Pro:AI状态工程为什么总丢进度?

ChatGPT、Codex、Plus与Pro:AI状态工程为什么总丢进度?

很多开发者在使用ChatGPT和Codex处理长任务时&#xff0c;都会遇到一种看似矛盾的情况。对话记录还在。 项目文件也已经读取。 前面的分析过程没有丢失。 AI甚至能够复述最初的需求。但继续执行时&#xff0c;它却可能出现这些问题&#xff1a;重复完成已经做过的步骤&#xff…

2026/7/23 22:24:22 阅读更多 →
不要像写Java一样写Go

不要像写Java一样写Go

每一层抽象都是一笔税&#xff0c;而你每天都在为它付利息。我最近在 review 一个支付系统的代码。为了追踪一笔订单的状态变更&#xff0c;我跳了七个文件&#xff1a;handler→service→manager→repository→repo_impl→dao→sqlc.Querier。等终于看到那行 UPDATE orders SE…

2026/7/23 22:24:22 阅读更多 →
市场对外呼系统的选择标准

市场对外呼系统的选择标准

随着电销行业监管趋严&#xff0c;企业挑选外呼系统不再只看重基础拨号功能&#xff0c;而是围绕合规安全、线路稳定、业务适配、成本与服务五大维度综合筛选&#xff0c;规避封号、业务中断、数据泄露等经营风险。合规资质是市场选型第一底线&#xff0c;也是区分正规服务商与…

2026/7/23 22:24:22 阅读更多 →
FS800DTU直连OnetNET上云实测

FS800DTU直连OnetNET上云实测

本文为「4G 物联网模块实战」系列第 3 篇&#xff0c;记录 FS800DTU 接入中国移动 OneNET 平台、把设备数据送上云的完整过程。 版权声明&#xff1a;本文为原创技术分享文章&#xff0c;转载请注明出处。 目录 前言1 准备工作2 配置步骤&#xff1a;FS800DTU 接入 OneNET 2.1…

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

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

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

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

日新闻

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

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

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

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

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

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

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

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

Chitchatter完整指南&#xff1a;免费开源的终极点对点安全聊天工具 【免费下载链接】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语言开发中&#xff0c;我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源&#xff0c;还是配置文件、证书等&#xff0c;都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下&#xff0c;但这…

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

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

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

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

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

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

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

月新闻