HarmonyOS 鸿蒙Next 进度条样式咨询

发布于 1周前 作者 gougou168 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 进度条样式咨询

现在需要实现一个饼状的进度条。 但是我看demo里面最接近饼状的是Ring,但是实际是一个圆环。 请问如何实现一个饼状的进度条

2 回复
想要实现饼状图的进度条,目前需要通过自定义的方式,通过canavas绘制出扇形进行实现。

参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-progress-V5#%E7%A4%BA%E4%BE%8B6

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-components-canvas-canvas-V5

不过基于ui样式的统一,这边建议还是使用官方提供的范式。

[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
  private settings: RenderingContextSettings = new RenderingContextSettings(true)
  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
  private centerX: number = 0
  private centerY: number = 0
  private radius: number = 0
  angle: number = -90
  start() {
    this.context.clearRect(-this.radius, -this.radius, this.context.width, this.context.height)
    this.context.beginPath()
    this.context.moveTo(0, 0)
    this.context.lineTo(0, -this.radius)
    this.context.arc(0, 0, this.radius, -Math.PI / 2, Math.PI / 180 * this.angle)
    this.context.lineTo(this.centerX * Math.cos(Math.PI / 180 * this.angle),
      this.centerY * Math.sin(Math.PI / 180 * this.angle))
    this.context.fill()
  }
  build() {
    Column() {
      Canvas(this.context).width(50).height(50).backgroundColor(Color.Pink)
        .onReady(() => {
          this.centerX = this.context.width / 2
          this.centerY = this.context.height / 2
          this.radius = this.context.width / 2
          this.context.translate(this.centerX, this.centerY)
          setInterval(() => {
            if (this.angle <= 270) {
              this.angle++
            } else {
              this.angle = -90
            }
            this.start()
          }, 10)
        })
    }.justifyContent(FlexAlign.Center)
    .height('100%')
    .width('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next 进度条样式咨询的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next进度条样式多样,可通过Progress组件实现。Progress组件用于显示目标操作的当前进度,支持多种样式,如线性(Linear)、环形无刻度(Ring)、环形有刻度(ScaleRing)、圆形(Eclipse)和胶囊(Capsule)。

其中,线性进度条适合展示水平或垂直进度;环形无刻度进度条以环形方式展示进度,无具体刻度;环形有刻度进度条则带有刻度,可更精确地表示进度;圆形进度条以圆形方式展示,常用于表示完成度;胶囊样式进度条则在头尾两端呈现圆弧状,中段为矩形长条。

创建进度条时,可通过设置value、total和type等参数来定义初始进度值、进度总长度和进度条样式。此外,还可通过调用width、height、color、style等方法进一步自定义进度条的外观,如宽度、高度、颜色和样式等。

总之,HarmonyOS 鸿蒙Next提供了丰富的进度条样式,开发者可根据实际需求选择合适的样式并进行自定义。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部