• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#  ArcButton
2<!--Kit: ArkUI-->
3<!--Subsystem: ArkUI-->
4<!--Owner: @liyi0309-->
5<!--Designer: @liyi0309-->
6<!--Tester: @lxl007-->
7<!--Adviser: @HelloCrease-->
8
9弧形按钮组件用于圆形屏幕的穿戴设备。提供强调、普通、警告等样式按钮。
10
11> **说明:**
12>
13> 该组件从API version 18开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
14
15## 导入模块
16
17```ts
18import {
19  ArcButton,
20  ArcButtonOptions,
21  ArcButtonStatus,
22  ArcButtonStyleMode,
23  ArcButtonPosition,
24}  from '@kit.ArkUI';
25```
26
27## 子组件
28
2930
31## 属性
32不支持[通用属性](ts-component-general-attributes.md)
33
34## 事件
35通用事件支持[点击事件](ts-universal-events-click.md)和[触摸事件](ts-universal-events-touch.md)。
36
37## ArcButton
38
39ArcButton({ options: ArcButtonOptions })
40
41创建ArcButton实例,入参是弧形按钮配置选项。
42
43**装饰器类型:** @Component
44
45**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
46
47**系统能力:** SystemCapability.ArkUI.ArkUI.Circle
48
49**参数**:
50
51| 名称    | 类型             | 必填 | 装饰器类型  | 说明                      |
52| ------- | ---------------- | ---- | ----------- | ------------------------- |
53| options | [ArcButtonOptions](#arcbuttonoptions) | 是   | @Require | 定义ArcButton组件的文本、背景色、阴影等参数。 |
54
55## ArcButtonOptions
56
57定义ArcButton的默认样式或自定义样式参数。
58
59**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
60
61**系统能力:** SystemCapability.ArkUI.ArkUI.Circle
62
63### 属性
64
65| 名称             | 类型                                                         | 只读 | 可选 | 说明                                                         |
66| ---------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | ------------------------------------------------------------ |
67| position         | [ArcButtonPosition](#arcbuttonposition)                      | 否   | 否 | 上下弧形按钮类型属性。<br/>默认值:ArcButtonPosition.BOTTOM_EDGE |
68| styleMode        | [ArcButtonStyleMode](#arcbuttonstylemode)                    | 否   | 否  | 弧形按钮样式模式。<br>默认值:ArcButtonStyleMode.EMPHASIZED_LIGHT |
69| status           | [ArcButtonStatus](#arcbuttonstatus)                          | 否  | 否  | 弧形按钮状态。<br/>默认值:ArcButtonStatus.NORMAL          |
70| label     | [ResourceStr](ts-types.md#resourcestr)                       | 否   | 否  | 弧形按钮显示文本。                                           |
71| backgroundBlurStyle | [BlurStyle](ts-universal-attributes-background.md#blurstyle9) | 否   | 否  | 弧形按钮背景模糊能力。<br/>默认值:BlurStyle.NONE |
72| backgroundColor  | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否  | 否  | 弧形按钮背景颜色。<br/>ArcButtonStyleMode需要设置为CUSTOM。<br/>默认值:Color.Black                 |
73| shadowColor      | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否  | 否  | 弧形按钮阴影颜色。<br/>默认值:Color.Black                 |
74| shadowEnabled    | boolean                                                      | 否  | 否  | 弧形按钮阴影开关。<br/>默认值:false<br/>值为true时,显示阴影。值为false时,不显示阴影。 |
75| fontSize | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否  | 否  | 弧形按钮文本大小。<br/>默认值:19fp                        |
76| fontColor | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | 否  | 弧形按钮文本颜色。<br/>ArcButtonStyleMode需要设置为CUSTOM。<br/>默认值:Color.White                 |
77| pressedFontColor | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否  | 否  | 弧形按钮按下文本颜色。<br/>ArcButtonStyleMode需要设置为CUSTOM。<br/>默认值:Color.White             |
78| fontStyle | [FontStyle](ts-appendix-enums.md#fontstyle)                  | 否  | 否  | 弧形按钮文本样式。<br/>默认值:FontStyle.Normal            |
79| fontFamily | string \| [Resource](ts-types.md#resource)                   | 否  | 否  | 弧形按钮字体名。                                             |
80| fontMargin | [LocalizedMargin](ts-types.md#localizedmargin12)             | 否  | 否  | 弧形按钮文本边距。<br/>默认值:{start:24vp, top: 10vp,end: 24vp, bottom:16vp } |
81|onTouch | [Callback](ts-types.md#voidcallback12)&lt; [TouchEvent](ts-universal-events-touch.md#touchevent对象说明)&gt; | 否   | 是  | 弧形按钮手指触摸动作触发该回调。 |
82|onClick | [Callback](ts-types.md#voidcallback12)&lt;[ClickEvent](ts-universal-events-click.md#clickevent对象说明) &gt; | 否   | 是  | 弧形按钮点击动作触发该回调。 |
83
84### constructor
85
86constructor(options: CommonArcButtonOptions)
87
88弧形按钮的构造器。
89
90**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
91
92**系统能力:** SystemCapability.ArkUI.ArkUI.Circle
93
94**参数:**
95
96| 参数名| 类型                                              | 必填 | 说明                                          |
97| ------- | ------------------------------------------------- | ---- | --------------------------------------------- |
98| options | [CommonArcButtonOptions](#commonarcbuttonoptions) | 是   | 定义ArcButton组件的文本、背景色、阴影等参数。 |
99
100## CommonArcButtonOptions
101
102ArcButton的默认样式或自定义样式参数。
103
104**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
105
106**系统能力:** SystemCapability.ArkUI.ArkUI.Circle
107
108| 名称                | 类型                                                         | 只读 | 可选 | 说明                                                         |
109| ------------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | ------------------------------------------------------------ |
110| position            | [ArcButtonPosition](#arcbuttonposition)                      |否  |是  | 上下弧形按钮类型属性。<br/>默认值:ArcButtonPosition.BOTTOM_EDGE |
111| styleMode           | [ArcButtonStyleMode](#arcbuttonstylemode)                    | 否  | 是 | 弧形按钮样式模式。<br>默认值:ArcButtonStyleMode.EMPHASIZED_LIGHT |
112| status              | [ArcButtonStatus](#arcbuttonstatus)                          |否   |是   | 弧形按钮状态。<br/>默认值:ArcButtonStatus.NORMAL            |
113| label               | [ResourceStr](ts-types.md#resourcestr)                       |否 |是 | 弧形按钮显示文本。                                           |
114| backgroundBlurStyle | [BlurStyle](ts-universal-attributes-background.md#blurstyle9) | 否  | 是 | 弧形按钮背景模糊能力。<br/>默认值:BlurStyle.NONE            |
115| backgroundColor     | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否 | 是 | 弧形按钮背景颜色。<br/>ArcButtonStyleMode需要设置为CUSTOM。<br/>默认值:Color.Black                   |
116| shadowColor         | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否  | 是 | 弧形按钮阴影颜色。<br/>默认值:Color.Black                   |
117| shadowEnabled       | boolean                                                      | 否 | 是 | 弧形按钮阴影开关。<br/>默认值:false<br/>值为true时,显示阴影。值为false时,不显示阴影。 |
118| fontSize            | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否  | 是 | 弧形按钮文本大小。<br/>默认值:19fp                          |
119| fontColor           | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  |否  |是  | 弧形按钮文本颜色。<br/>ArcButtonStyleMode需要设置为CUSTOM。<br/>默认值:Color.White                   |
120| pressedFontColor    | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否  | 是 | 弧形按钮按下文本颜色。<br/>ArcButtonStyleMode需要设置为CUSTOM。<br/>默认值:Color.White               |
121| fontStyle           | [FontStyle](ts-appendix-enums.md#fontstyle)                  | 否  | 是 | 弧形按钮文本样式。<br/>默认值:FontStyle.Normal              |
122| fontFamily          | string \| [Resource](ts-types.md#resource)                   |否  |是  | 弧形按钮字体名。                                             |
123| fontMargin          | [LocalizedMargin](ts-types.md#localizedmargin12)             | 否  | 是 | 弧形按钮文本边距。<br/>默认值:{start:24vp, top: 10vp,end: 24vp, bottom:16vp } |
124| onTouch             | [Callback](ts-types.md#voidcallback12)&lt; [TouchEvent](ts-universal-events-touch.md#touchevent对象说明)&gt; | 否   | 是  | 弧形按钮手指触摸动作触发该回调。                             |
125| onClick             | [Callback](ts-types.md#voidcallback12)&lt;[ClickEvent](ts-universal-events-click.md#clickevent对象说明) &gt; | 否   | 是  | 弧形按钮点击动作触发该回调。                                 |
126
127## ArcButtonPosition
128
129定义ArcButton可设置的弧形按钮的类型。
130
131**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
132
133**系统能力:** SystemCapability.ArkUI.ArkUI.Circle
134
135| 名称        | 值   | 说明                           |
136| ----------- | ---- | -------------------------------- |
137| TOP_EDGE    | 0    | 上弧形按钮,位于圆形屏幕上方。     |
138| BOTTOM_EDGE | 1    | 底部弧形按钮,位于圆形屏幕底部。 |
139
140
141## ArcButtonStyleMode
142
143定义ArcButton可设置弧形按钮样式模式。
144
145**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
146
147**系统能力:** SystemCapability.ArkUI.ArkUI.Circle
148
149| 名称             | 值   | 说明             |
150| ---------------- | ---- | ---------------- |
151| EMPHASIZED_LIGHT | 0    | 强调状态,亮色。 |
152| EMPHASIZED_DARK  | 1    | 强调状态,暗色。 |
153| NORMAL_LIGHT     | 2    | 正常状态,亮色。 |
154| NORMAL_DARK      | 3    | 正常状态,暗色。 |
155| CUSTOM           | 4    | 自定义按钮颜色和字体颜色。 |
156
157
158## ArcButtonStatus
159
160定义ArcButton可设置的弧形按钮状态。
161
162**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
163
164**系统能力:** SystemCapability.ArkUI.ArkUI.Circle
165
166| 名称     | 值   | 说明       |
167| -------- | ---- | ---------- |
168| NORMAL   | 0    | 正常状态。 |
169| PRESSED  | 1    | 按压状态。 |
170| DISABLED | 2    | 禁用状态。 |
171
172
173## 示例
174
175从API version18开始,该示例展示了ArcButton的基本用法。
176
177topOptions定义了上弧形按钮,按钮文本为ButtonTop,字体大小为15fp,按钮状态为正常状态,按钮样式为亮色强调,启用阴影。
178
179bottomOptions定义了底部弧形按钮,按钮文本为ButtonBottom,字体大小为15fp,按钮样式为亮色强调,启用阴影,设置了按钮的点击事件。
180
181运行该示例需要Wearable设备的支持。在src/main目录下的工程配置文件[module.json5](../../../quick-start/module-configuration-file.md)中[deviceTypes标签](../../../quick-start/module-configuration-file.md#devicetypes标签)内配置wearable。
182
183```json
184// module.json5
185{
186  "module": {
187    // ...
188    "deviceTypes": [
189      "wearable",
190      "phone"
191    ]
192    // ...
193  }
194}
195```
196
197```ts
198// xxx.ets
199import {
200  LengthMetrics,
201  LengthUnit,
202  ArcButton,
203  ArcButtonOptions,
204  ArcButtonStatus,
205  ArcButtonStyleMode,
206  ArcButtonPosition,
207}  from '@kit.ArkUI';
208
209@Entry
210@ComponentV2
211struct Index {
212  @Local topOptions: ArcButtonOptions = new ArcButtonOptions({});
213  @Local bottomOptions: ArcButtonOptions = new ArcButtonOptions({});
214
215  aboutToAppear() {
216    this.topOptions = new ArcButtonOptions({
217      label: 'ButtonTop',
218      status: ArcButtonStatus.NORMAL,
219      position: ArcButtonPosition.TOP_EDGE,
220      styleMode: ArcButtonStyleMode.EMPHASIZED_LIGHT,
221      fontSize: new LengthMetrics(15, LengthUnit.FP),
222      shadowEnabled: true
223    })
224
225    this.bottomOptions = new ArcButtonOptions({
226      label: 'ButtonBottom',
227      styleMode: ArcButtonStyleMode.EMPHASIZED_LIGHT,
228      fontSize: new LengthMetrics(15, LengthUnit.FP),
229      shadowEnabled: true,
230      onClick: () => {
231        console.info('click from ArcButton.');
232      }
233    })
234  }
235
236  build() {
237    Stack() {
238      Stack() {
239        Circle({ width: 233, height: 233 })
240          .strokeWidth(0.1)
241          .fill(Color.White)
242
243        Column() {
244          ArcButton({ options: this.topOptions })
245          Blank()
246          ArcButton({ options: this.bottomOptions })
247
248        }.width('100%')
249        .height('100%')
250      }.width(233)
251      .height(233)
252    }.width('100%')
253    .height('100%')
254    .alignContent(Alignment.Center)
255    .backgroundColor(Color.Gray)
256  }
257}
258
259```
260
261![](figures/advanced_arcButton.jpg)