- 探索了解鸿蒙应用和多设备开发,学习如何构建应用/元服务应用形态HarmonyOS 应用One as All,All as One
元服务秒开直达 服务随行 无处不在
游戏为游戏创意玩法带来无限可能
多设备应用开发穿戴
折叠屏手机鸿蒙电脑开发者学堂视频课程Codelabs - 设计了解鸿蒙应用和多设备开发,学习如何构建应用/元服务
- 开发获取官方开发工具和文档等资源,将创意转化为鸿蒙应用开发工具DevEco Studio应用开发 IDE, AI Agent 和 CLI
小艺开放平台Skill 和智能体开发平台
ArkTS
ArKUI
AppGallery ConnectDevEco Testing开发资源工具下载示例代码开发文档最佳实践 - 分发通过华为应用市场发布你的应用,多渠道触达用户应用分发应用市场纯净安全的全场景应用分发平台
游戏中心
应用审核政策服务分发小艺HarmonyOS 的超级 AI 入口
智慧助手·今天
服务分发文档内容分发主题服务
内容分发文档 - 推广与变现一站式流量增长与营销变现平台推广应用推广引擎全链路应用推广与增长服务平台
鲸鸿动能广告为企业广告主提供广告营销服务
联运服务推广文档变现鲸鸿动能流量变现使能应用展示广告,实现流量变现
应用内支付变现文档 - 生态合作携手伙伴共建共享鸿蒙智能终端生态伙伴 SDK一站式获取安全可靠的鸿蒙伙伴 SDK
生态服务鸿蒙应用开发、培训和人力服务
服务商伙伴中心华为终端云服务商伙伴的统一门户
伙伴入驻指南生态市场介绍,卖家和买家服务指引
廉洁政策合作伙伴诚信廉洁政策
- 支持获取客服帮助、技术支持、活动资讯等信息智能客服24小时 AI 在线自助服务,即问即答
社区问答在官方论坛提问,与开发者互动交流
在线提单提交工单,获得技术支持
开发者活动HDD 等线下活动速览及报名入口
资讯帮助指南
HarmonyOS开发者版主1|
ArkUI (方舟UI框架)
UI
HarmonyOS 5
HarmonyOS 如何实现图片进度条彩色显示? (API12+)
HarmonyOS 如何实现图片进度条彩色显示? (API12+)
1
浏览17 发布于2026-04-02 11:25未知归属地
全部评论
最多点赞
最新发布
最早发布

1.aboutToAppear生命周期中启动定时器,每500ms触发一次,通过增加状态变量progress从0.0到1.0控制图片变化进度。
aboutToAppear() {
this.timer = setInterval(() => {
this.progress = Math.min(1, this.progress + 0.1)
if (this.progress >= 1) {
clearInterval(this.timer)
}
}, 200)
2.使用Stack叠加两张内容相同但颜色不同的图片比如灰色和彩色,彩色图片始终完整显示在底层,灰色图片通过clipShape进行裁剪,裁剪宽度随progress变化:
Stack({ alignContent: Alignment.Start }) {
Image(this.colorImage)
.width('100%')
.height('100%')
.objectFit(ImageFit.Contain)
Image(this.grayImage)
.width('100%')
.height('100%')
.objectFit(ImageFit.Contain)
.clip(true)
.clipShape(new Rect({
width: `${this.progress * 100}%`,
height: '100%'
}))
.transform({ translateX: `${(1 - this.progress) * 300}px` })
}
.width(300)
.height(300)
完整示例代码如下:
@Entry
@Component
struct ImageProgress {
@State progress: number = 0.0
private grayImage: Resource = $r('app.media.start') // 对应彩色图片
private colorImage: Resource = $r('app.media.final') // 对应灰色图片
private timer: number = 0
aboutToAppear() {
this.timer = setInterval(() => {
this.progress = Math.min(1, this.progress + 0.1)
if (this.progress >= 1) {
clearInterval(this.timer)
}
}, 200)
}
aboutToDisappear() {
clearInterval(this.timer)
}
build() {
Column() {
Stack({ alignContent: Alignment.Start }) {
Image(this.colorImage)
.width('100%')
.height('100%')
.objectFit(ImageFit.Contain)
Image(this.grayImage)
.width('100%')
.height('100%')
.objectFit(ImageFit.Contain)
.clip(true)
.clipShape(new Rect({
width: `${this.progress * 100}%`,
height: '100%'
}))
.transform({ translateX: `${(1 - this.progress) * 300}px` })
}
.width(300)
.height(300)
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
}
}
展开全部 
1楼回复于2026-04-02 11:25 未知归属地
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
- 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
- 如您发布的内容为转载内容,请注明内容来源。
我要提问题
相关推荐
换一批
1
HarmonyOS 实现图片编辑功能 (API12+)
2
HarmonyOS 如何实现图片拉伸效果 (API12+)
3
HarmonyOS 属性字符串通过ImageAttachment来添加多个图片(API12+)
4
HarmonyOS @Reusable用法可能导致的图片泄漏吗 (API12+)
5
HarmonyOS 自定义渐变色进度条如何实现?(API12+)
6
HarmonyOS 如何实现图形填色 (API12+)
7
HarmonyOS 如何获取图片颜色(API12+)
8
HarmonyOS Video刻度进度条组件实现demo (API12+)
了解社区公约,与您携手共创和谐专业的开发者社区。












苏公安网备 32011402010933号