• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# ArkUI子系统Changelog
2
3## cl.arkui.1 文本与输入、信息展示、按钮与选择、滚动与滑动、图形绘制组件接口支持Resource类型
4
5**访问级别**
6
7公开接口
8
9**变更原因**
10
11基础能力增强,文本与输入、信息展示、按钮与选择、滚动与滑动、图形绘制组件的接口支持Resource类型,可以使用资源对象设置默认选项的值。
12
13**变更影响**
14
15此变更涉及应用适配。
16
17- 变更前:TextPickerOptions、Progress、QRCode、TextClock、TextTimer、Badge、Circle、Text、TextArea、TextInput、Search、Span、RichEditor、Rating、Rect、Ellipse、Line、Polyline、Path、Polygon、ProgressButton、SubHeader、SubHeaderV2、Shape、SwipeRefresher中部分接口不支持Resource类型。
18
19- 变更后:TextPickerOptions、Progress、QRCode、TextClock、TextTimer、Badge、Circle、Text、TextArea、TextInput、Search、Span、RichEditor、Rating、Rect、Ellipse、Line、Polyline、Path、Polygon、ProgressButton、SubHeader、SubHeaderV2、Shape、SwipeRefresher中部分接口支持Resource类型。
20
21
22**起始API Level**
23
2411
25
26**变更发生版本**
27
28从OpenHarmony SDK 6.0.0.32开始。
29
30**变更的接口/组件**
31
32|组件名称|接口名称|参数名称|
33|--|--|--|
34|TextPicker|TextPickerOptions|value|
35|Progress|CapsuleStyleOptions|content|
36|TextPicker|TextPickerOptions|value|
37|QRCode|QRCodeInterface|value|
38|TextClock|format|value|
39|TextTimer|fontWeight|value|
40|Badge|BadgeStyle|fontSize、badgeSize、fontWeight|
41|Badge|BadgeParamWithString|value|
42|Circle|CircleOptions|width、height|
43|Text|fontWeight|value、weight|
44|Text|letterSpacing|value|
45|Text|baselineOffset|value|
46|TextArea|fontWeight|value|
47|TextInput|fontWeight|value|
48|Search|SearchOptions|value|
49|Search|searchButton|value|
50|Span|fontWeight|value|
51|Span|letterSpacing|value|
52|RichEditor|RichEditorController.addTextSpan|content|
53|Rating|StarStyleOptions|backgroundUri、foregroundUri、secondaryUri|
54|Rect|RectOptions|width、height、radius|
55|Rect|RoundedRectOptions|width、height、radiusWidth、radiusHeight|
56|Rect|radiusWidth|value|
57|Rect|radiusHeight|value|
58|Rect|radius|value|
59|Ellipse|EllipseOptions|width、height|
60|Line|LineOptions|width、height|
61|Polyline|PolylineOptions|width、height|
62|Path|PathOptions|width、height、commands|
63|Path|commands|value|
64|Polygon|PolygonOptions|width、height|
65|ProgressButton|-|content|
66|SubHeader|SelectOptions|value|
67|SubHeaderV2|SubHeaderV2SelectOptions|selectedContent|
68|SubHeaderV2|SubHeaderV2Select|selectedContent|
69|Shape|ViewportRect|x、y、width、height|
70|Shape|strokeDashOffset|value|
71|Shape|strokeMiterLimit|value|
72|Shape|strokeWidth|value|
73|SwipeRefresher|-|content|
74
75**适配指导**
76
77若有继承派生或者读取赋值则需要在定义处增加Resource类型支持,否则无需适配。
78
79```ts
80@Entry
81@Component
82struct Index {
83  searchOptions: SearchOptions = { value: '123456'}
84  // @State text: string = this.searchOptions.value; //原定义
85  @State text: ResourceStr | undefined = this.searchOptions.value; //适配定义
86  build() {
87    Column() {
88      Scroll() {
89        Column({ space: 20 }) {
90          Search(this.searchOptions)
91          Text(this.text)
92        }.alignItems(HorizontalAlign.Center).width('100%').margin({ top: 20 })
93      }
94    }
95  }
96}
97```
98
99## cl.arkui.2 width和height支持的matchParent接口规格变更
100
101**访问级别**
102
103公开接口
104
105**变更原因**
106
107接口能力增强,使能Row和Column在设置matchParent时仅适应父组件内容区大小并且调整constraintSize和matchParent的优先级。
108
109**变更影响**
110
111此变更不涉及应用适配。
112
113变更前:Row和Column的子组件matchParent时,会将其大小设置为父组件包含padding、border以及safeAreaPadding后的大小并且不受自身constraintSize的约束。
114
115变更后:Row和Column的子组件matchParent时,会将其大小设置为父组件不包含padding、border以及safeAreaPadding后的大小,即与父组件内容区大小保持一致并且会受到自身constraintSize的约束。
116
117例如:运行以下示例,进入页面后,观察Row组件matchParent的最终结果为父组件内容区大小。
118
119```ts
120@Entry
121@Component
122struct Demo {
123  build() {
124    Column() {
125      Row().width(LayoutPolicy.matchParent).height(LayoutPolicy.matchParent).backgroundColor('rgb(0, 74, 175)')
126    }.width(200).height(200).padding(20).backgroundColor('rgb(39, 135, 217)')
127  }
128}
129```
130
131变更前后效果如下:
132
133|变更前|变更后|
134|--|--|
135|![变更前效果](figures/match_parent_before.jpeg)|![变更后效果](figures/match_parent_after.jpeg)|
136
137再例如:运行以下示例,进入页面后,观察Row组件的子组件matchParent的最终结果会受自身constraintSize约束。
138
139```ts
140@Entry
141@Component
142struct Demo {
143  build() {
144    Column({ space: 100 }) {
145      Row() {
146        Stack()
147          .width(LayoutPolicy.matchParent)
148          .height(LayoutPolicy.matchParent)
149          .constraintSize({ maxWidth: 50, maxHeight: 50 })
150          .backgroundColor('rgb(0, 74, 175)')
151      }.width(200).height(200).backgroundColor('rgb(39, 135, 217)')
152
153      Row() {
154        Stack()
155          .width(LayoutPolicy.matchParent)
156          .height(LayoutPolicy.matchParent)
157          .constraintSize({ minWidth: 100, minHeight: 100 })
158          .backgroundColor('rgb(0, 74, 175)')
159      }.width(50).height(50).backgroundColor('rgb(39, 135, 217)')
160    }.width('100%').height('100%')
161  }
162}
163```
164
165变更前后效果如下:
166
167|变更前|变更后|
168|--|--|
169|![变更前效果](figures/constraintBefore.jpeg)|![变更后效果](figures/constraintAfter.jpeg)|
170
171**起始API Level**
172
17315
174
175**变更发生版本**
176
177从OpenHarmony SDK 6.0.0.32开始。
178
179**变更的接口/组件**
180
181width(widthValue: Length | LayoutPolicy): T
182
183height(heightValue: Length | LayoutPolicy): T
184
185**适配指导**
186
187默认行为变更,无需适配。
188
189## cl.arkui.3 GridRow组件columns参数和GridCol组件span参数默认值变更
190
191**访问级别**
192
193公开接口
194
195**变更原因**
196
197栅格组件默认值原规格容易引发页面压缩问题,变更后提升组件易用性。
198
199**变更影响**
200
201该变更不涉及应用适配。
202
203|               变更前                |              变更后               |
204| :---------------------------------: | :-------------------------------: |
205|GridRow中columns不配置时,默认值为12。 |GridRow中columns不配置时,columns使用默认值:{ xs: 2, sm: 4, md: 8, lg: 12, xl: 12, xxl: 12 }|
206|GridRow中columns配置部分断点时,取已配置的更小断点的columns列数补全未配置的列数。若未配置更小断点的columns列数,取默认值12。 </br> `columns: {xs:2, md:4, lg:8} 等于配置 columns: {xs:2, sm:2, md:4, lg:8, xl:8, xxl:8}` </br> `columns: {md:4, lg:8} 等于配置 columns: {xs:12, sm:12, md:4, lg:8, xl:8, xxl:8}`|GridRow中columns配置部分断点时,取已配置的更小断点的columns列数补全未配置的列数。若未配置更小断点的columns列数,取已配置的更大断点的columns列数补全未配置的列数。</br>`columns: {xs:2, md:4, lg:8} 等于配置 columns: {xs:2, sm:2, md:4, lg:8, xl:8, xxl:8}` </br> `columns: {md:4, lg:8} 等于配置 columns: {xs:4, sm:4, md:4, lg:8, xl:8, xxl:8}`|
207|GridCol中span配置部分断点时,取已配置的更小断点的span列数补全未配置的列数。若未配置更小断点的span列数,取默认值1。</br> `span: {xs:2, md:4, lg:8} 等于配置 span: {xs:2, sm:2, md:4, lg:8, xl:8, xxl:8}` </br> `span: {md:4, lg:8} 等于配置 span: {xs:1, sm:1, md:4, lg:8, xl:8, xxl:8}`|GridCol中span配置部分断点时,取已配置的更小断点的span列数补全未配置的列数。若未配置更小断点的span列数,取已配置的更大断点的span列数补全未配置的列数。</br> `span: {xs:2, md:4, lg:8} 等于配置 span: {xs:2, sm:2, md:4, lg:8, xl:8, xxl:8}` </br> `span: {md:4, lg:8} 等于配置 span: {xs:4, sm:4, md:4, lg:8, xl:8, xxl:8}`|
208
209**起始API Level**
210
2119
212
213**变更发生版本**
214
215从OpenHarmony SDK 6.0.0.32开始。
216
217**变更的接口/组件**
218
219GridRow组件、GridCol组件。
220
221**适配指导**
222
223默认行为变更,无需适配,但应注意变更后的默认效果是否符合开发者预期,可手动配置所有不同宽度设备下GridRow组件的栅格列数和GridCol组件所占列数,避免使用默认值或默认补全的布局效果不符合预期。
224
225```ts
226@Entry
227@Component
228struct Example {
229  @State bgColors: ResourceColor[] =
230    ['rgb(213,213,213)', 'rgb(150,150,150)', 'rgb(0,74,175)', 'rgb(39,135,217)', 'rgb(61,157,180)', 'rgb(23,169,141)',
231      'rgb(255,192,0)', 'rgb(170,10,33)'];
232  @State currentBp: string = "unknown"
233
234  build() {
235    Column() {
236      Column() {
237        Text(this.currentBp)
238        GridRow({
239          columns: {
240            xs: 2, // 窗口宽度落入xs断点上,栅格栅格容器每一行分为2列。
241            sm: 4, // 窗口宽度落入sm断点上,栅格栅格容器每一行分为4列。
242            md: 8, // 窗口宽度落入md断点上,栅格栅格容器每一行分为8列。
243            lg: 12, // 窗口宽度落入lg断点上,栅格栅格容器每一行分为12列。
244            xl: 12, // 窗口宽度落入xl断点上,栅格栅格容器每一行分为12列。
245            xxl: 12 // 窗口宽度落入xxl断点上,栅格栅格容器每一行分为12列。
246          },
247          breakpoints: {
248            value: ['320vp', '600vp', '840vp', '1440vp', '1600vp'],
249            reference: BreakpointsReference.WindowSize
250          }
251        }) {
252          ForEach(this.bgColors, (color: ResourceColor, index?: number | undefined) => {
253            GridCol({
254              span: {
255                xs: 1, // 窗口宽度落入xs断点上,栅格子容器宽度占1列。
256                sm: 2, // 窗口宽度落入sm断点上,栅格子容器宽度占2列。
257                md: 4, // 窗口宽度落入md断点上,栅格子容器宽度占4列。
258                lg: 6, // 窗口宽度落入lg断点上,栅格子容器宽度占6列。
259                xl: 6, // 窗口宽度落入xl断点上,栅格子容器宽度占6列。
260                xxl: 6 // 窗口宽度落入xxl断点上,栅格子容器宽度占6列。
261              }
262            }) {
263              Row() {
264                Text(`${index}`)
265              }.width("100%").height('50vp')
266            }.backgroundColor(color)
267          })
268        }
269        .onBreakpointChange((breakpoint) => {
270          this.currentBp = breakpoint
271        })
272      }.width('90%')
273    }.width('100%')
274  }
275}
276```
277## cl.arkui.2 UI Input相关NDK接口行为变更
278
279**访问级别**
280
281公开接口
282
283**变更原因**
284
285修复相关接口在如下场景下的返回值异常问题,以确保开发者能够获取正确的结果:
286
287- 鼠标滚轮或触控板双指滑动;
288- 通过Enter键触发点击或单指轻触手势;
289- 使用外设键盘等设备与焦点窗口交互;
290- 组件节点接收按键事件;
291- 为XComponent组件注册自定义事件拦截回调后进行触摸测试;
292- 绑定组件接收轴事件;
293- 为XComponent组件注册UI输入事件回调后接收UI输入事件。
294
295**变更影响**
296
297此变更为非兼容性变更。
298
299变更前与变更后的变化说明:
300| 接口名称                                                      | 起始版本 | 说明                                                     | 变更原因                                                     | 变更影响                                                     |
301| ------------------------------------------------------------- | -------- | -------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------------ |
302| int32_t<br> OH_ArkUI_UIInputEvent_GetType(const ArkUI_UIInputEvent* event); | 12        | 获取该裸事件对应的枚举类型ArkUI_UIInputEvent_Type,变更前包括触控、轴、鼠标这几种裸事件 | 遗漏支持key事件类型                                          | 当传入的参数为key事件时,获取的类型为0,修复后可获取正确值(ARKUI_UIINPUTEVENT_TYPE_KEY)。 |
303| int32_t<br> OH_ArkUI_UIInputEvent_GetAction(const ArkUI_UIInputEvent* event); | 12        | 获取裸事件对应的事件action类型,例如,如果裸事件为触控事件,则获取到的事件action类型为DOWN、MOVE、UP、CANCEL之一;若裸事件类型为鼠标事件,则为PRESS、RELEASE、MOVE、CANCEL之一;若为轴事件,则为BEGIN、UPDATE、END、CANCEL之一。因此,action类型的定义和含义存在差异,但在接口设计上,将返回值统一为int类型,以消除这些差异。 | 遗漏支持axis事件类型                                          | 当传入的参数为axis事件时,获取的类型为0,修复后可获取正确值(BEGIN/UPDATE/END/CANCEL)。 |
304| int32_t<br> OH_ArkUI_UIInputEvent_GetDeviceId(const ArkUI_UIInputEvent* event); | 14        | 获取当前输入事件的触发设备ID                                 |  实现遗漏通过键盘Enter键触发的click事件场景。 | 1. 仅TAB键走焦场景有可能触发该场景;<br>2.变更前应用无法获取正确的当前输入事件的触发设备ID,修复后可获取正确的当前输入事件的触发设备ID。 |
305
306**起始API Level**
307
308API 12
309
310**变更发生版本**
311
312从OpenHarmony 6.0.0.32版本开始。
313
314**变更的接口/组件**
315
316int32_t OH_ArkUI_UIInputEvent_GetType(const ArkUI_UIInputEvent* event);<br>
317int32_t OH_ArkUI_UIInputEvent_GetAction(const ArkUI_UIInputEvent* event);<br>
318int32_t OH_ArkUI_UIInputEvent_GetDeviceId(const ArkUI_UIInputEvent* event);<br>
319
320**适配指导**
321
322变更前的接口遗漏对部分事件的支持,导致输入这些事件时会返回默认值,与预期不符;修复后的接口已支持这些遗漏的事件,调用时可获取正确的返回值,应用无需特殊适配。
323
324## cl.arkui.5 使用字面量初始化CustomDialogController类实例导致的编译行为变更
325
326**访问级别**
327
328公开接口
329
330**变更原因**
331
332在类CustomDialogController中新增接口getState()获取对应弹窗的状态。当原先使用字面量的方式初始化CustomDialogController实例时,会编译报错。字面量的初始化方式是指采用"{}"直接初始化类的实例,例如:
333```typescript
334let controller: CustomDialogController = { open() {}, close() {} }
335```
336
337**变更影响**
338
339此变更涉及应用适配,使用字面量初始化CustomDialogController类实例时涉及。
340变更前:开发者可以通过字面量的方式初始化CustomDialogController,如:
341
342```typescript
343let controller: CustomDialogController = { open() {}, close() {} }
344```
345
346变更后:由于在CustomDialogController中新增了getState()方法,变更前的上述写法未初始化新增的getState()方法,会编译报错。
347
348**起始API Level**
349
350不涉及
351
352**变更发生版本**
353
354从OpenHarmony 6.0.0.32版本开始。
355
356**变更的接口/组件**
357
358编译行为,不涉及接口
359
360**适配指导**
361
362开发者应修改为使用new的方式创建类的实例,如:
363
364```typescript
365let controller: CustomDialogController = new CustomDialogController()
366```
367
368