• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Arc Button (ArcButton)
2
3
4The **ArcButton** component represents an arc button specifically designed for circular screens on wearable devices. It offers various button styles, such as emphasized, normal, and warning, tailored for watch UIs. For details, see [ArcButton](../reference/apis-arkui/arkui-ts/ohos-arkui-advanced-ArcButton.md).
5
6
7## Creating a Button
8
9To create an **ArcButton** component, use the following:
10
11  ```ts
12ArcButton({
13  options: new ArcButtonOptions({
14    label: 'OK',
15    position: ArcButtonPosition.TOP_EDGE,
16    styleMode: ArcButtonStyleMode.EMPHASIZED_LIGHT
17  })
18})
19  ```
20
21- [label](../reference/apis-arkui/arkui-ts/ohos-arkui-advanced-ArcButton.md#arcbuttonoptions): sets the text displayed on the button.
22
23- [position](../reference/apis-arkui/arkui-ts/ohos-arkui-advanced-ArcButton.md#arcbuttonoptions): sets the type of the button.
24
25- [styleMode](../reference/apis-arkui/arkui-ts/ohos-arkui-advanced-ArcButton.md#arcbuttonoptions): sets the style mode of the button.
26
27  ![top](figures/ArcButtonTop.png)
28
29## Setting the Button Type
30
31The **ArcButton** component offers two types: top arc button and bottom arc button. Use the [position](../reference/apis-arkui/arkui-ts/ohos-arkui-advanced-ArcButton.md#arcbuttonoptions) attribute to set the type.
32
33- Lower arc button (default type)
34
35  Set [position](../reference/apis-arkui/arkui-ts/ohos-arkui-advanced-ArcButton.md#arcbuttonoptions) to **ArcButtonPosition.BOTTOM_EDGE**.
36
37  ```ts
38  ArcButton({
39    options: new ArcButtonOptions({
40      label: 'OK',
41      position: ArcButtonPosition.BOTTOM_EDGE,
42      styleMode: ArcButtonStyleMode.EMPHASIZED_LIGHT
43    })
44  })
45  ```
46
47  ![bottom](figures/ArcButtonBottom.png)
48
49- Upper arc button
50
51  Set [position](../reference/apis-arkui/arkui-ts/ohos-arkui-advanced-ArcButton.md#arcbuttonoptions) to **ArcButtonPosition.TOP_EDGE**.
52
53  ```ts
54  ArcButton({
55    options: new ArcButtonOptions({
56      label: 'OK',
57      position: ArcButtonPosition.TOP_EDGE,
58      styleMode: ArcButtonStyleMode.EMPHASIZED_LIGHT
59    })
60  })
61  ```
62
63  ![top](figures/ArcButtonTOP_EDGE.png)
64
65## Customizing the Style
66
67- Setting the background color
68
69  Use the [backgroundColor](../reference/apis-arkui/arkui-ts/ohos-arkui-advanced-ArcButton.md#arcbuttonoptions) attribute to set the background color of the button.
70
71  ```ts
72  ArcButton({
73    options: new ArcButtonOptions({
74      label: 'OK',
75      styleMode: ArcButtonStyleMode.CUSTOM,
76      backgroundColor: ColorMetrics.resourceColor('#707070')
77    })
78  })
79  ```
80
81  ![custom_bg](figures/ArcButtonCustom_bg.png)
82
83- Setting the font color
84
85  Use the [fontColor](../reference/apis-arkui/arkui-ts/ohos-arkui-advanced-ArcButton.md#arcbuttonoptions) attribute to set the font color of the button.
86
87  ```ts
88  ArcButton({
89    options: new ArcButtonOptions({
90      label: 'OK',
91      styleMode: ArcButtonStyleMode.CUSTOM,
92      backgroundColor: ColorMetrics.resourceColor('#E84026'),
93      fontColor: ColorMetrics.resourceColor('#707070')
94    })
95  })
96  ```
97
98  ![custom_font](figures/ArcButtonCustom_font.png)
99
100- Setting the shadow color
101
102  Enable the button shadow using the [shadowEnabled](../reference/apis-arkui/arkui-ts/ohos-arkui-advanced-ArcButton.md#arcbuttonoptions) attribute and set the shadow color using the [shadowColor](../reference/apis-arkui/arkui-ts/ohos-arkui-advanced-ArcButton.md#arcbuttonoptions) attribute.
103
104  ```ts
105  ArcButton({
106    options: new ArcButtonOptions({
107      label: 'OK',
108      shadowEnabled: true,
109      shadowColor: ColorMetrics.resourceColor('#707070')
110    })
111  })
112  ```
113
114  ![custom_shadow](figures/ArcButtonCustom_shadow.png)
115
116## Adding Events
117
118- Bind the **onClick** event to define custom behavior to be executed when the button is clicked.
119
120  ```ts
121  ArcButton({
122    options: new ArcButtonOptions({
123      label: 'OK',
124      onClick: () => {
125        console.info('ArcButton onClick')
126      }
127    })
128  })
129  ```
130
131- Bind the **onTouch** event to define custom behavior to be executed when the button is touched.
132
133  ```ts
134  ArcButton({
135    options: new ArcButtonOptions({
136      label: 'OK',
137      onTouch: (event: TouchEvent) => {
138        console.info('ArcButton onTouch')
139      }
140    })
141  })
142  ```
143
144## Example
145
146This example demonstrates a brightness settings screen where a slider displays the current brightness level at 30%. When the reset button is clicked, the brightness value is reset to the default value of 50%.
147
148  ```ts
149import { LengthMetrics, LengthUnit, ArcButton, ArcButtonOptions, ArcButtonStyleMode, } from '@kit.ArkUI';
150
151@Entry
152@ComponentV2
153struct BrightnessPage {
154  @Local brightnessValue: number = 30
155  private defaultBrightnessValue: number = 50
156
157  build() {
158    RelativeContainer() {
159      Text('Set brightness')
160        .fontColor(Color.Black)
161        .id('id_brightness_set_text')
162        .fontSize(24)
163        .margin({ top: 16 })
164        .alignRules({
165          middle: { anchor: '__container__', align: HorizontalAlign.Center }
166        })
167
168      Text(`${this.brightnessValue} %`)
169        .fontColor(Color.Black)
170        .id('id_brightness_min_text')
171        .margin({ left: 16 })
172        .alignRules({
173          start: { anchor: '__container__', align: HorizontalAlign.Start },
174          center: { anchor: '__container__', align: VerticalAlign.Center }
175        })
176
177      Slider({
178        value: this.brightnessValue,
179        min: 0,
180        max: 100,
181        style: SliderStyle.InSet
182      })
183        .blockColor('#191970')
184        .trackColor('#ADD8E6')
185        .selectedColor('#4169E1')
186        .width(150)
187        .id('id_brightness_slider')
188        .margin({ left: 16, right: 16 })
189        .onChange((value: number, mode: SliderChangeMode) => {
190          this.brightnessValue = value
191        })
192        .alignRules({
193          center: { anchor: 'id_brightness_min_text', align: VerticalAlign.Center },
194          start: { anchor: 'id_brightness_min_text', align: HorizontalAlign.End },
195          end: { anchor: 'id_brightness_max_text', align: HorizontalAlign.Start }
196        })
197
198      ArcButton({
199        options: new ArcButtonOptions({
200          label: 'Reset',
201          styleMode: ArcButtonStyleMode.EMPHASIZED_LIGHT,
202          fontSize: new LengthMetrics(19, LengthUnit.FP),
203          onClick: () => {
204            this.brightnessValue = this.defaultBrightnessValue
205          }
206        })
207      })
208        .alignRules({
209          middle: { anchor: '__container__', align: HorizontalAlign.Center },
210          bottom: { anchor: '__container__', align: VerticalAlign.Bottom }
211        })
212    }
213    .height('100%')
214    .width('100%')
215    .backgroundColor(Color.White)
216  }
217}
218  ```
219
220  ![example](figures/example_normal.png)
221