ts-basic-components-progress.md 15.6 KB
Newer Older
Z
zengyawen 已提交
1 2
# Progress

T
third  
tianyu 已提交
3
进度条组件,用于显示内容加载或操作处理等进度。
Z
zengyawen 已提交
4

G
gmy 已提交
5 6
>  **说明:**
>
H
HelloCrease 已提交
7
>  该组件从API version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
Z
zengyawen 已提交
8

Z
zengyawen 已提交
9 10

## 子组件
Z
zengyawen 已提交
11 12 13



Z
zengyawen 已提交
14

S
sienna1128 已提交
15
## 接口
Z
zengyawen 已提交
16

K
kangchongtao 已提交
17
Progress(options: {value: number, total?: number, type?: ProgressType})
Z
zengyawen 已提交
18 19 20

创建进度组件,用于显示内容加载或操作处理进度。

21 22
从API version 9开始,该接口支持在ArkTS卡片中使用。

G
gmy 已提交
23
**参数:**
Z
zengyawen 已提交
24

H
HelloCrease 已提交
25 26 27 28 29
| 参数名                        | 参数类型                                | 必填   | 参数描述                                     |
| -------------------------- | ----------------------------------- | ---- | ---------------------------------------- |
| value                      | number                              | 是    | 指定当前进度值。设置小于0的数值时置为0,设置大于total的数值时置为total。<br/>从API version 9开始,该接口支持在ArkTS卡片中使用。 |
| total                      | number                              | 否    | 指定进度总长。<br/>默认值:100<br/>从API version 9开始,该接口支持在ArkTS卡片中使用。 |
| type<sup>8+</sup>          | [ProgressType](#progresstype枚举说明)   | 否    | 指定进度条类型。<br/>默认值:ProgressType.Linear<br/>从API version 9开始,该接口支持在ArkTS卡片中使用。 |
H
HelloCrease 已提交
30
| style<sup>(deprecated)</sup> | [ProgressStyle](#progressstyle枚举说明) | 否    | 指定进度条样式。<br/>该参数从API version8开始废弃,建议使用type替代。<br/>默认值:ProgressStyle.Linear |
Z
zengyawen 已提交
31

G
gmy 已提交
32
## ProgressType枚举说明
Z
zengyawen 已提交
33

34 35
从API version 9开始,该接口支持在ArkTS卡片中使用。

H
HelloCrease 已提交
36 37 38 39 40 41 42
| 名称                     | 描述                                       |
| ---------------------- | ---------------------------------------- |
| Linear                 | 线性样式。从API version9开始,高度大于宽度的时候自适应垂直显示。   |
| Ring<sup>8+</sup>      | 环形无刻度样式,环形圆环逐渐显示至完全填充效果。                 |
| Eclipse<sup>8+</sup>   | 圆形样式,显示类似月圆月缺的进度展示效果,从月牙逐渐变化至满月。         |
| ScaleRing<sup>8+</sup> | 环形有刻度样式,显示类似时钟刻度形式的进度展示效果。从API version9开始,刻度外圈出现重叠的时候自动转换为环形无刻度进度条。 |
| Capsule<sup>8+</sup>   | 胶囊样式,头尾两端圆弧处的进度展示效果与Eclipse相同;中段处的进度展示效果与Linear相同。高度大于宽度的时候自适应垂直显示。 |
T
third  
tianyu 已提交
43 44 45

##  ProgressStyle枚举说明 

46 47
从API version 9开始,该接口支持在ArkTS卡片中使用。

H
HelloCrease 已提交
48 49 50 51 52 53
| 名称        | 描述                                       |
| --------- | ---------------------------------------- |
| Linear    | 线性样式。                                    |
| Ring      | 环形无刻度样式,环形圆环逐渐显示至完全填充效果。                 |
| Eclipse   | 圆形样式,显示类似月圆月缺的进度展示效果,从月牙逐渐变化至满月。         |
| ScaleRing | 环形有刻度样式,显示类似时钟刻度形式的进度展示效果。               |
54
| Capsule   | 胶囊样式,头尾两端圆弧处的进度展示效果与Eclipse相同;中段处的进度展示效果与Linear相同。高度大于宽度的时候自适应垂直显示。 |
Z
zengyawen 已提交
55 56 57

## 属性

Y
yamila 已提交
58 59
除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性:

Y
yamila 已提交
60 61 62
| 名称               | 参数类型                                                     | 描述                                                         |
| ------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| value              | number                                                       | 设置当前进度值。设置小于0的数值时置为0,设置大于total的数值时置为total。非法数值不生效。<br/>从API version 9开始,该接口支持在ArkTS卡片中使用。 |
S
sunjiakun 已提交
63
| color              | [ResourceColor](ts-types.md#resourcecolor)    \| [LinearGradient<sup>10+</sup>](ts-basic-components-datapanel.md#lineargradient10对象说明) | 设置进度条前景色。<br/>从API version 10开始支持利用LinearGradient设置Ring样式的渐变色。<br/>默认值(API version 9):'\#ff007dff'<br/>默认值(API version 10):<br/>- Capsule:'\#33006cde'<br/>- Ring:起始端:'\#ff3b61f7',结束端:'\#ff6591bf'<br/>- 其他样式:'\#ff007dff'<br/>从API version 9开始,该接口支持在ArkTS卡片中使用,暂不支持LinearGradient。 |
Y
yamila 已提交
64
| backgroundColor    | [ResourceColor](ts-types.md#resourcecolor)                   | 设置进度条底色。<br/>默认值(API version 9):'\#19182431'<br/>默认值(API version 10):<br/>- Capsule:'\#33ffffff'<br/>- Ring:'\#08182431'<br/>- 其他样式:'\#19182431'<br/>从API version 9开始,该接口支持在ArkTS卡片中使用。<br/>**说明:** <br/>当设置[通用属性backgroundColor](./ts-universal-attributes-background.md)时,生效的是进度条的底色,而不是整个Progress组件的背景色。 |
S
sunjiakun 已提交
65
| style<sup>8+</sup> | [ProgressStyleOptions](#progressstyleoptions) \| [CapsuleStyleOptions<sup>10+</sup>](#capsulestyleoptions10) \| [RingStyleOptions<sup>10+</sup>](#ringstyleoptions10) \| [LinearStyleOptions<sup>10+</sup>](#linearstyleoptions10) \| [ScaleRingStyleOptions<sup>10+</sup>](#scaleringstyleoptions10) \| [EclipseStyleOptions<sup>10+</sup>](#eclipsestyleoptions10) | 定义组件的样式。<br/>从API version 10开始支持以下类型:<br/>- CapsuleStyleOptions:设置Capsule的样式。<br/>- RingStyleOptions:设置Ring的样式。<br/>- LinearStyleOptions:设置Linear的样式。<br/>- ScaleRingStyleOptions:设置ScaleRing的样式。<br/>- EclipseStyleOptions:设置Eclipse的样式。<br/>- ProgressStyleOptions:仅可设置各类型进度条的基本样式。<br/>从API version 9开始,该接口支持在ArkTS卡片中设置ProgressStyleOptions,暂不支持其它的参数类型。 |
S
sunjiakun 已提交
66 67 68 69

## ProgressStyleOptions
| 名称          | 参数类型                      | 必填 | 描述                                                                                        |
| ------------ | ---------------------------- | ---- | ------------------------------------------------------------------------------------------ |
S
sunjiakun 已提交
70
| strokeWidth  | [Length](ts-types.md#length) | 否   | 设置进度条宽度(不支持百分比设置)。<br/>默认值:4.0vp                                            |
S
sunjiakun 已提交
71
| scaleCount   | number                       | 否   | 设置环形进度条总刻度数。<br/>默认值:120                                                        |
S
sunjiakun 已提交
72
| scaleWidth   | [Length](ts-types.md#length) | 否   | 设置环形进度条刻度粗细(不支持百分比设置),刻度粗细大于进度条宽度时,为系统默认粗细。<br/>默认值:2.0vp |
S
sunjiakun 已提交
73 74 75 76 77

## CapsuleStyleOptions<sup>10+</sup>
| 名称          | 参数类型 | 必填 | 描述 |
| ------------- | ------- | ---- | -------- |
| borderColor | [ResourceColor](ts-types.md#resourcecolor) | 否 | 内描边颜色。<br/>默认值:'\#33006cde' |
S
sunjiakun 已提交
78
| borderWidth | [Length](ts-types.md#length) | 否 | 内描边宽度(不支持百分比设置)。<br/>默认值:1vp |
S
sunjiakun 已提交
79
| content | string | 否 | 文本内容,应用可自定义。 |
S
sunjiakun 已提交
80
| font | [Font](ts-types.md#font) | 否 | 文本样式。<br/>默认值:<br/>- 文本大小(不支持百分比设置):12fp <br/>其他文本参数跟随text组件的主题值。|
S
sunjiakun 已提交
81 82
| fontColor | [ResourceColor](ts-types.md#resourcecolor) | 否 | 文本颜色。<br/>默认值:'\#ff182431' |
| enableScanEffect | boolean | 否 | 扫光效果的开关。<br/>默认值:false |
S
sunjiakun 已提交
83
| showDefaultPercentage | boolean | 否 | 显示百分比文本的开关,开启后会在进度条上显示当前进度的百分比。设置了content属性时该属性不生效。<br/>默认值:false |
S
sunjiakun 已提交
84 85 86 87

## RingStyleOptions<sup>10+</sup>
| 名称           | 参数类型                      | 必填 | 描述                                                                                        |
| ------------- | ---------------------------- | ---- | ------------------------------------------------------------------------------------------ |
S
sunjiakun 已提交
88
| strokeWidth   | [Length](ts-types.md#length) | 否   | 设置进度条宽度(不支持百分比设置),宽度大于等于半径时,默认修改宽度至半径值的二分之一。<br/>默认值:4.0vp |
S
sunjiakun 已提交
89
| shadow        | boolean                      | 否   | 进度条阴影开关。<br/>默认值:false                                                             |
90
| status        | [ProgressStatus<sup>10+</sup>](#progressstatus10枚举说明) | 否 | 进度条状态,当设置为LOADING时会开启检查更新动效,此时设置进度值不生效。当从LOADING设置为PROGRESSING,检查更新动效会执行到终点再停止。<br/>默认值: ProgressStatus.PROGRESSING |
S
sunjiakun 已提交
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
| enableScanEffect | boolean | 否 | 进度条扫光效果的开关。<br/>默认值: false |

## LinearStyleOptions<sup>10+</sup>
| 名称           | 参数类型                      | 必填 | 描述                                                                                        |
| ------------- | ---------------------------- | ---- | ------------------------------------------------------------------------------------------ |
| strokeWidth   | [Length](ts-types.md#length) | 否   | 设置进度条宽度(不支持百分比设置)。<br/>默认值:4.0vp |
| enableScanEffect | boolean | 否 | 进度条扫光效果的开关。<br/>默认值: false |

## ScaleRingStyleOptions<sup>10+</sup>
| 名称          | 参数类型                      | 必填 | 描述                                                                                        |
| ------------ | ---------------------------- | ---- | ------------------------------------------------------------------------------------------ |
| strokeWidth  | [Length](ts-types.md#length) | 否   | 设置进度条宽度(不支持百分比设置)。<br/>默认值:4.0vp                                            |
| scaleCount   | number                       | 否   | 设置环形进度条总刻度数。<br/>默认值:120                                                        |
| scaleWidth   | [Length](ts-types.md#length) | 否   | 设置环形进度条刻度粗细(不支持百分比设置),刻度粗细大于进度条宽度时,为系统默认粗细。<br/>默认值:2.0vp |

## EclipseStyleOptions<sup>10+</sup>
暂无参数。
S
sunjiakun 已提交
108 109 110 111 112 113

## ProgressStatus<sup>10+</sup>枚举说明
| 名称                    | 描述             |
| ----------------------- | ---------------- |
| LOADING<sup>10+</sup>  | 加载中。 |
| PROGRESSING<sup>10+</sup>  | 进度更新中。 |
Z
zengyawen 已提交
114

Y
yamila 已提交
115 116 117
## 事件

支持[通用事件](ts-universal-events-click.md)
Z
zengyawen 已提交
118 119

## 示例
S
sunjiakun 已提交
120 121
### 示例1
各进度条基础属性效果
H
geshi  
HelloCrease 已提交
122 123
```ts
// xxx.ets
Z
zengyawen 已提交
124 125 126 127
@Entry
@Component
struct ProgressExample {
  build() {
Z
zengyawen 已提交
128
    Column({ space: 15 }) {
Z
zengyawen 已提交
129
      Text('Linear Progress').fontSize(9).fontColor(0xCCCCCC).width('90%')
Y
yaoyuchi 已提交
130 131
      Progress({ value: 10, type: ProgressType.Linear }).width(200)
      Progress({ value: 20, total: 150, type: ProgressType.Linear }).color(Color.Grey).value(50).width(200)
Z
zengyawen 已提交
132

S
sienna1128 已提交
133

Z
zengyawen 已提交
134 135
      Text('Eclipse Progress').fontSize(9).fontColor(0xCCCCCC).width('90%')
      Row({ space: 40 }) {
Y
yaoyuchi 已提交
136 137
        Progress({ value: 10, type: ProgressType.Eclipse }).width(100)
        Progress({ value: 20, total: 150, type: ProgressType.Eclipse }).color(Color.Grey).value(50).width(100)
Z
zengyawen 已提交
138 139 140 141
      }

      Text('ScaleRing Progress').fontSize(9).fontColor(0xCCCCCC).width('90%')
      Row({ space: 40 }) {
Y
yaoyuchi 已提交
142 143
        Progress({ value: 10, type: ProgressType.ScaleRing }).width(100)
        Progress({ value: 20, total: 150, type: ProgressType.ScaleRing })
Z
zengyawen 已提交
144
          .color(Color.Grey).value(50).width(100)
Y
yaoyuchi 已提交
145
          .style({ strokeWidth: 15, scaleCount: 15, scaleWidth: 5 })
Z
zengyawen 已提交
146 147
      }

S
sienna1128 已提交
148 149 150 151 152 153 154 155 156 157
      // scaleCount和scaleWidth效果对比
      Row({ space: 40 }) {
        Progress({ value: 20, total: 150, type: ProgressType.ScaleRing })
          .color(Color.Grey).value(50).width(100)
          .style({ strokeWidth: 20, scaleCount: 20, scaleWidth: 5 })
        Progress({ value: 20, total: 150, type: ProgressType.ScaleRing })
          .color(Color.Grey).value(50).width(100)
          .style({ strokeWidth: 20, scaleCount: 30, scaleWidth: 3 })
      }

Z
zengyawen 已提交
158 159
      Text('Ring Progress').fontSize(9).fontColor(0xCCCCCC).width('90%')
      Row({ space: 40 }) {
Y
yaoyuchi 已提交
160 161
        Progress({ value: 10, type: ProgressType.Ring }).width(100)
        Progress({ value: 20, total: 150, type: ProgressType.Ring })
Z
zengyawen 已提交
162
          .color(Color.Grey).value(50).width(100)
S
sunjiakun 已提交
163
          .style({ strokeWidth: 20 })
Z
zengyawen 已提交
164 165 166 167
      }

      Text('Capsule Progress').fontSize(9).fontColor(0xCCCCCC).width('90%')
      Row({ space: 40 }) {
T
tianyu 已提交
168
        Progress({ value: 10, type: ProgressType.Capsule }).width(100).height(50)
G
gmy 已提交
169 170 171 172 173
        Progress({ value: 20, total: 150, type: ProgressType.Capsule })
          .color(Color.Grey)
          .value(50)
          .width(100)
          .height(50)
Z
zengyawen 已提交
174 175
      }
    }.width('100%').margin({ top: 30 })
Z
zengyawen 已提交
176 177 178 179
  }
}
```

H
HelloCrease 已提交
180
![progress](figures/arkts-progress.png)
S
sunjiakun 已提交
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251

### 示例2
环形进度条视觉属性
```ts
@Entry
@Component
struct ProgressExample {
  private gradientColor: LinearGradient = new LinearGradient([{ color: Color.Yellow, offset: 0.5 },
                                                              { color: Color.Orange, offset: 1.0 }])
  build() {
    Column({ space: 15 }) {
      Text('Gradient Color').fontSize(9).fontColor(0xCCCCCC).width('90%')
      Progress({ value: 70, total: 100, type: ProgressType.Ring })
        .width(100).style({ strokeWidth: 20 })
        .color(this.gradientColor)

      Text('Shadow').fontSize(9).fontColor(0xCCCCCC).width('90%')
      Progress({ value: 70, total: 100, type: ProgressType.Ring })
        .width(120).color(Color.Orange)
        .style({ strokeWidth: 20, shadow: true })
    }.width('100%').padding({ top: 5 })
  }
}
```
![ringProgressStyleEffect](figures/arkts-ringProgressStyleEffect.png)

### 示例3
环形进度条动效
```ts
@Entry
@Component
struct ProgressExample {
  private gradientColor: LinearGradient = new LinearGradient([{ color: Color.Yellow, offset: 0.5 },
                                                              { color: Color.Orange, offset: 1.0 }])
  build() {
    Column({ space: 15 }) {
      Text('Loading Effect').fontSize(9).fontColor(0xCCCCCC).width('90%')
      Progress({ value: 0, total: 100, type: ProgressType.Ring })
        .width(100).color(Color.Blue)
        .style({ strokeWidth: 20, status: ProgressStatus.LOADING })

      Text('Scan Effect').fontSize(9).fontColor(0xCCCCCC).width('90%')
      Progress({ value: 30, total: 100, type: ProgressType.Ring })
        .width(100).color(Color.Orange)
        .style({ strokeWidth: 20, enableScanEffect: true })
    }.width('100%').padding({ top: 5 })
  }
}
```
![ringProgressAnimation](figures/arkts-ringProgressAnimation.gif)

### 示例4
胶囊形进度条视觉属性
```ts
@Entry
@Component
struct ProgressExample {

  build() {
    Column({ space: 15 }) {
      Row({ space: 40 }) {
        Progress({ value: 100, total: 100,type: ProgressType.Capsule }).width(100).height(50)
          .style({borderColor: Color.Blue, borderWidth: 1, content: 'Installing...',
                  font: {size: 13, style: FontStyle.Normal}, fontColor: Color.Gray,
                  enableScanEffect: false, showDefaultPercentage: false})
      }
    }.width('100%').padding({ top: 5 })
  }
}
```
![capsuleProgressStyleEffect](figures/arkts-capsuleProgressStyleEffect.png)