HarmonyOS 鸿蒙Next 圆环状的Progress的颜色值问题
HarmonyOS 鸿蒙Next 圆环状的Progress的颜色值问题
现在有一台真机最近升级了系统后,发现进度条颜色变成了从浅蓝色到蓝色的渐变色了。
我是在onDidBuild生命周期中执行animateTo方法,不确定是不是这里引起的。因为如果我不执行animateTo,保持静态的Progress,颜色是正常的。
如果不允许在onDidBuild执行animateTo,那么我应该怎么实现这个显示了loading组件就开始动画的效果。
我自己尝试了一下,在onDidBuild中通过setTimeout延时执行animateTo方法,是可行的。甚至我在demo中把延时时长设置为0都可以。
但在真实项目的话,这种延时方案不稳妥吧,这个延时时长设置多少才合适我也拿不准。
看官方文档也没有找到相关对应的api更新介绍。
onDidBuild 函数在执行自定义组件的 build() 函数之后执行。不建议在 onDidBuild 函数中更改状态变量、使用 animateTo 等功能,这可能会导致不稳定的 UI 表现。
建议通过 onAppear 通用事件来实现动画效果,示例代码片段如下:
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
[@State](/user/State) message: string = 'Hello World';
[@State](/user/State) rotateValue: number = 0;
build() {
RelativeContainer() {
Text(this.message)
.id(‘HelloWorld’)
.fontSize(50)
.fontWeight(FontWeight.Bold)
.alignRules({
center: { anchor: ‘container’, align: VerticalAlign.Center },
middle: { anchor: ‘container’, align: HorizontalAlign.Center }
})
Progress({ value: 28, total: 100, type: ProgressType.Ring })
.width(40)
.height(40)
.rotate({ angle: this.rotateValue })
.backgroundColor(Color.Black)
.color(Color.White)
.style({ strokeWidth: 4, scaleWidth: 4 })
.margin({ top: 40 })
.alignRules({
top: { anchor: ‘HelloWorld’, align: VerticalAlign.Bottom },
middle: { anchor: ‘container’, align: HorizontalAlign.Center }
})
// 使用 onAppear 来执行 animateTo 动画
.onAppear(() => {
animateTo({ curve: Curve.Linear, duration: 1000, iterations: -1 }, () => {
this.rotateValue = 360;
})
})
}
.height(‘100%’)
.width(‘100%’)
}
}
在HarmonyOS鸿蒙Next中,圆环状的Progress组件的颜色值可以通过多种方式进行设置。
首先,可以在创建Progress组件时,通过.color()
方法直接设置前景色。例如:
Progress({value: 40, total: 150, type: ProgressType.Ring})
.width(100)
.height(100)
.color(Color.Grey); // 设置前景色为灰色
其次,如果使用的是XML布局文件,可以通过ohos:progressColor
属性来设置圆环进度条的颜色。例如:
<ohos.agp.components.Progress
ohos:id="$+id:ring_progress"
ohos:height="200vp"
ohos:width="200vp"
ohos:progress="50"
ohos:min="0"
ohos:max="100"
ohos:progressColor="#FF0000" /> <!-- 设置进度条颜色为红色 -->
此外,如果需要设置渐变色,可以通过编程方式动态设置。例如,在Java代码中获取Progress组件后,使用setBarGradientColor
方法设置渐变色。
如果以上方法无法解决问题,可能是组件属性设置不当或版本差异导致。建议检查组件属性和HarmonyOS版本,确保设置正确且符合当前版本要求。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。