• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 进度条
2
3
4Progress是进度条显示组件,显示内容通常为某次目标操作的当前进度。具体用法请参考[Progress](../reference/arkui-ts/ts-basic-components-progress.md)。
5
6
7## 创建进度条
8
9Progress通过调用接口来创建,接口调用形式如下:
10
11
12
13```ts
14Progress(options: {value: number, total?: number, type?: ProgressType})
15```
16
17
18该接口用于创建type样式的进度条,其中value用于设置初始进度值,total用于设置进度总长度,type决定Progress样式。
19
20
21
22```ts
23Progress({ value: 24, total: 100, type: ProgressType.Linear }) // 创建一个进度总长为100,初始进度值为24的线性进度条
24```
25
26
27![create](figures/create.png)
28
29
30## 设置进度条样式
31
32Progress有5种可选类型,在创建时通过设置ProgressType枚举类型给type可选项指定Progress类型。其分别为:ProgressType.Linear(线性样式)、 ProgressType.Ring(环形无刻度样式)、ProgressType.ScaleRing(环形有刻度样式)、ProgressType.Eclipse(圆形样式)和ProgressType.Capsule(胶囊样式)。
33
34
35- 线性样式进度条(默认类型)
36  >**说明:**
37  >
38  > 从API version9开始,组件高度大于宽度的时候自适应垂直显示,相等时仍然保持水平显示。
39
40
41  ```ts
42  Progress({ value: 20, total: 100, type: ProgressType.Linear }).width(200).height(50)
43  Progress({ value: 20, total: 100, type: ProgressType.Linear }).width(50).height(200)
44  ```
45
46  ![zh-cn_image_0000001562700417](figures/zh-cn_image_0000001562700417.png)
47
48- 环形无刻度样式进度条
49
50  ```ts
51  // 从左往右,1号环形进度条,默认前景色为蓝色,默认strokeWidth进度条宽度为2.0vp
52  Progress({ value: 40, total: 150, type: ProgressType.Ring }).width(100).height(100)
53  // 从左往右,2号环形进度条
54  Progress({ value: 40, total: 150, type: ProgressType.Ring }).width(100).height(100)
55      .color(Color.Grey)	// 进度条前景色为灰色
56      .style({ strokeWidth: 15})	// 设置strokeWidth进度条宽度为15.0vp
57  ```
58
59  ![progress_ring](figures/progress_ring.png)
60
61- 环形有刻度样式进度条
62
63  ```ts
64  Progress({ value: 20, total: 150, type: ProgressType.ScaleRing }).width(100).height(100)
65      .backgroundColor(Color.Black)
66      .style({ scaleCount: 20, scaleWidth: 5 })	// 设置环形有刻度进度条总刻度数为20,刻度宽度为5vp
67  Progress({ value: 20, total: 150, type: ProgressType.ScaleRing }).width(100).height(100)
68      .backgroundColor(Color.Black)
69      .style({ strokeWidth: 15, scaleCount: 20, scaleWidth: 5 })	// 设置环形有刻度进度条宽度15,总刻度数为20,刻度宽度为5vp
70  Progress({ value: 20, total: 150, type: ProgressType.ScaleRing }).width(100).height(100)
71      .backgroundColor(Color.Black)
72      .style({ strokeWidth: 15, scaleCount: 20, scaleWidth: 3 })	// 设置环形有刻度进度条宽度15,总刻度数为20,刻度宽度为3vp
73  ```
74
75  ![progress_scalering](figures/progress_scalering.png)
76
77- 圆形样式进度条
78
79  ```ts
80  // 从左往右,1号圆形进度条,默认前景色为蓝色
81  Progress({ value: 10, total: 150, type: ProgressType.Eclipse }).width(100).height(100)
82  // 从左往右,2号圆形进度条,指定前景色为灰色
83  Progress({ value: 20, total: 150, type: ProgressType.Eclipse }).color(Color.Grey).width(100).height(100)
84  ```
85
86  ![progress_circle](figures/progress_circle.png)
87
88- 胶囊样式进度条
89  >**说明:**
90  >
91  >-  头尾两端圆弧处的进度展示效果与ProgressType.Eclipse样式相同;
92  >-  中段处的进度展示效果为矩形状长条,与ProgressType.Linear线性样式相似;
93  >
94  >-  组件高度大于宽度的时候自适应垂直显示。
95
96
97  ```ts
98  Progress({ value: 10, total: 150, type: ProgressType.Capsule }).width(100).height(50)
99  Progress({ value: 20, total: 150, type: ProgressType.Capsule }).width(50).height(100).color(Color.Grey)
100  Progress({ value: 50, total: 150, type: ProgressType.Capsule }).width(50).height(100).backgroundColor(Color.Black)
101  ```
102
103  ![progress_captule](figures/progress_captule.png)
104
105
106## 场景示例
107
108更新当前进度值,如应用安装进度条。可通过点击Button增加progressValue,.value()属性将progressValue设置给Progress组件,进度条组件即会触发刷新,更新当前进度。
109
110```ts
111@Entry
112@Component
113struct ProgressCase1 {
114  @State progressValue: number = 0	// 设置进度条初始值为0
115  build() {
116    Column() {
117      Column() {
118        Progress({value:0, total:100, type:ProgressType.Capsule}).width(200).height(50)
119          .style({strokeWidth:50}).value(this.progressValue)
120        Row().width('100%').height(5)
121        Button("进度条+5")
122          .onClick(()=>{
123            this.progressValue += 5
124            if (this.progressValue > 100){
125              this.progressValue = 0
126            }
127          })
128      }
129    }.width('100%').height('100%')
130  }
131}
132```
133
134
135![progress](figures/progress.gif)
136