HarmonyOS鸿蒙Next中Progress进度条多种样式方案说明和源码DEMO提供

HarmonyOS鸿蒙Next中Progress进度条多种样式方案说明和源码DEMO提供 鸿蒙Progress进度条多种样式方案说明和源码DEMO提供

3 回复

一、结论

图片

HarmonyOS的ArkUI框架,提供了Progress组件,通过设置ProgressType,能实现以下多种类型的进度条:

1、线性进度条(Linear):这是最常见的进度条样式,以直线的形式展示进度。从API version 9开始,当组件高度大于宽度时,它会自适应垂直显示;当高度和宽度相等时,保持水平显示。

2、环形无刻度进度条(Ring):这种进度条呈环形,通过环形圆环的逐渐填充来显示进度,默认前景色为蓝色,默认strokeWidth进度条宽度为2.0vp。

3、 环形有刻度进度条(ScaleRing):它显示类似时钟刻度形式的进度展示效果。在头尾两端圆弧处的进度展示效果与圆形样式(Eclipse)相同,中段处的进度展示效果为矩形状长条,与线性样式相似。从API version 9开始,当刻度外圈出现重叠时,它会自动转换为环形无刻度进度条。

4、 椭圆形进度条(Eclipse):显示类似月圆月缺的进度展示效果,从月牙逐渐变化至满月。

5、胶囊进度条(Capsule):头尾两端圆弧处的进度展示效果与椭圆形样式(Eclipse)相同,中段处的进度展示效果与线性样式(Linear)相同。当高度大于宽度时,它会自适应垂直显示。

二、代码实现和详细解释

/**
 * 弹窗样式测试页面
 */
@Entry
@Component
struct ProgressStyleTest{
  build() {
    Column({ space: 30 }) {
      // 1. 线性进度条(基金申购进度)
      this.buildLinearProgress();
      // 2. 环形无刻度进度条(收益计算)
      this.buildRingProgress();
      // 3. 环形有刻度进度条(定投完成度)
      this.buildScaleRingProgress();
      // 4. 椭圆形进度条(支付验证)
      this.buildEclipseProgress();
      // 5. 胶囊进度条(大额转账验证)
      this.buildCapsuleProgress();
    }
    .width('100%')
    .height('100%')
    .padding(20)
    .backgroundColor("#F5F5F5"); // 金融APP通用背景色
  }

  // 线性进度条(基金申购)
  @Builder
  buildLinearProgress() {
    Column({ space: 10 }) {
      Text("基金申购进度(65%)")
        .fontSize(16)
        .fontColor("#1A1A1A");
      Progress({ value: 65, total: 100, type: ProgressType.Linear })
        .width('90%')
        .height(18)
        .color("#0066CC") // 金融蓝(银行品牌色)
        .backgroundColor("#E5E5E5")
        .animation({ duration: 500, curve: Curve.EaseInOut });
    }
  }

  // 环形无刻度进度条(收益计算)
  @Builder
  buildRingProgress() {
    Column({ space: 10 }) {
      Text("理财收益计算中(78%)")
        .fontSize(16)
        .fontColor("#1A1A1A");
      Progress({ value: 78, total: 100, type: ProgressType.Ring })
        .width(80)
        .height(80)
        .color("#009966"); // 金融绿(代表收益/成功)
    }
  }

  // 环形有刻度进度条(定投完成度)
  @Builder
  buildScaleRingProgress() {
    Column({ space: 10 }) {
      Text("定投计划完成度(8/12期)")
        .fontSize(16)
        .fontColor("#1A1A1A");
      Progress({ value: 8, total: 12, type: ProgressType.ScaleRing })
        .width(100)
        .height(100)
        .color("#FF6600"); // 金融橙(中性色调)
    }
  }

  // 椭圆形进度条(支付验证)
  @Builder
  buildEclipseProgress() {
    Column({ space: 10 }) {
      Text("支付验证中(45%)")
        .fontSize(16)
        .fontColor("#1A1A1A");
      Progress({ value: 45, total: 100, type: ProgressType.Eclipse })
        .width(60)
        .height(60)
        .color("#CC0000"); // 金融红(支付场景)
    }
  }

  // 胶囊进度条(大额转账验证)
  @Builder
  buildCapsuleProgress() {
    Column({ space: 10 }) {
      Text("大额转账身份验证(90%)")
        .fontSize(16)
        .fontColor("#1A1A1A");
      Progress({ value: 90, total: 100, type: ProgressType.Capsule })
        .width('90%')
        .height(24)
        .color("#0066CC")
        .backgroundColor("#E5E5E5");
    }
  }
}

三、引用资料地址

1、进度条官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-basic-components-progress

更多关于HarmonyOS鸿蒙Next中Progress进度条多种样式方案说明和源码DEMO提供的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


Progress进度条样式

HarmonyOS Next中Progress进度条支持线性、环形和刻度样式。

线性进度条

通过Progress组件实现,可设置颜色、宽度等属性。

环形进度条

使用Progress组件结合环形参数配置。

刻度样式

通过自定义绘制实现,可调整刻度数量与颜色。

源码DEMO

可通过华为开发者联盟官网或HarmonyOS应用开发文档获取,包含多种样式示例及实现代码。

在HarmonyOS Next中,Progress组件提供了多种样式和自定义能力,用于展示任务或操作的进度。以下是核心样式方案及实现说明:

一、主要样式方案

  1. 线性进度条 (Linear)
    • 环形进度条 (RingType)
      • 默认样式:ProgressType.Ring
      • 可设置ProgressStyle.Smooth实现平滑环形
    • 刻度进度条 (ScaleRingType)
      • 带刻度标记的环形:ProgressType.ScaleRing
    • 胶囊进度条 (Capsule)
      • 横向胶囊形状:ProgressType.Capsule

二、关键属性配置

Progress({
  value: 50,                    // 当前进度值
  total: 100,                   // 总进度值
  type: ProgressType.Ring       // 进度条类型
})
.width(100)
.height(100)

三、自定义样式示例

// 环形进度条带渐变
Progress({
  value: progressValue,
  total: 100,
  type: ProgressType.Ring
})
.style({
  strokeWidth: 15,
  scaleCount: 60,
  scaleWidth: 5
})
.linearGradient({
  angle: 90,
  colors: [[0xff0000, 0.1], [0x00ff00, 1.0]]
})

四、状态管理

// 动态更新进度
@State progressValue: number = 0;

// 进度动画
animateTo({
  duration: 1000,
  onFinish: () => {
    this.progressValue = 75;
  }
})

五、DEMO源码要点

完整DEMO应包含:

  1. 多种ProgressType的实例展示
  2. 动态进度更新逻辑
  3. 样式自定义配置示例
  4. 事件处理(如点击重置进度)

六、注意事项

  1. 进度值范围控制在0到total之间
  2. 环形进度条建议设置合适的宽高比例
  3. 使用状态变量管理进度值变化

这种设计让Progress组件既能满足基础进度展示需求,也能通过丰富样式配置适应复杂场景。

回到顶部