• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# ArkUI子系统Changelog
2
3## cl.arkui.1 带标题栏窗口应用内菜单弹出位置变更
4
5**访问级别**
6
7公开接口
8
9**变更原因**
10
11对于带标题栏窗口使用非子窗的Menu组件场景,菜单默认弹出位置调整,UX体验更佳。
12
13
14**变更影响**
15
16此变更不涉及应用适配。
17
18变更前:带标题栏窗口应用内弹出菜单位置偏移4vp,菜单没有和按钮对齐。
19
20变更后:带标题栏窗口应用内弹出菜单位置正确,菜单和按钮对齐。
21
22| 变更前 | 变更后 |
23|---------|---------|
24|  ![变更前](figures/menu-item-4vp-before.png)       |  ![变更后](figures/menu-item-4vp-after.png)       |
25
26**起始API Level**
27
28API 11
29
30**变更发生版本**
31
32从OpenHarmony SDK 5.1.0.45开始。
33
34**变更的接口/组件**
35
36Menu组件。
37
38**适配指导**
39
40Menu UX默认效果变更,无需适配,但应注意变更后的默认效果是否符合开发者预期,如不符合则应自定义修改效果控制变量以达到预期。
41
42## cl.arkui.2 MenuItem设置padding属性时默认布局行为变更
43
44**访问级别**
45
46公开接口
47
48**变更原因**
49
50优化MenuItem添加padding时布局效果,变更后效果更佳。
51
52**变更影响**
53
54此变更不涉及应用适配。
55
56变更前:MenuItem设置padding属性时,布局和预期不符合。
57
58变更后:MenuItem设置padding属性时,布局符合预期。
59
60```ts
61@Entry
62@Component
63struct Index {
64  @Builder
65  MenuWithPadding() {
66    Menu() {
67      MenuItemGroup() {
68        MenuItem({content:"top bottom padding is 20vp"})
69          .padding({top:20, bottom: 20})
70          .borderWidth(2)
71          .borderColor(Color.Black)
72        MenuItem({content:"top padding is 20vp"})
73          .padding({top:20})
74          .borderWidth(2)
75          .borderColor(Color.Black)
76        MenuItem({content:"bottom padding is 20vp"})
77          .padding({bottom: 20})
78          .borderWidth(2)
79          .borderColor(Color.Black)
80      }
81    }
82  }
83
84  build() {
85    Column() {
86      Button("菜单")
87        .bindMenu(this.MenuWithPadding)
88    }
89    .width('100%')
90  }
91}
92```
93
94| 变更前 | 变更后 |
95|---------|---------|
96|  ![变更前](figures/item-padding-before.png)       |  ![变更后](figures/item-padding-after.png)       |
97
98**起始API Level**
99
100API 7
101
102**变更发生版本**
103
104从OpenHarmony SDK 5.1.0.45 版本开始。
105
106**变更的接口/组件**
107
108MenuItem组件。
109
110**适配指导**
111
112MenuItem设置padding属性时默认布局效果变更,开发者无需适配。
113
114## cl.arkui.3 DatePickerDialog和TimePickerDialog调用show()方法,参数缺省时的行为变更
115
116**访问级别**
117
118公开接口
119
120**变更原因**
121
122DatePickerDialog和TimePickerDialog调用show()方法,若参数缺省,无法弹出对话框。该参数为可选参数,会对开发者造成困惑。
123
124**变更影响**
125
126此变更不涉及应用适配。
127
128举例说明,执行以下用例:
129
130```ts
131@Entry
132@Component
133struct PickerDialogExample {
134  build() {
135    Column() {
136      Button("DatePickerDialog")
137        .onClick(() => {
138          DatePickerDialog.show()
139        })
140
141      Button("TimePickerDialog")
142        .margin(20)
143        .onClick(() => {
144          TimePickerDialog.show()
145        })
146    }
147  }
148}
149```
150
151变更前:
152DatePickerDialog.show()和TimePickerDialog.show()无法弹出日期选择器对话框。
153
154变更后:
155DatePickerDialog.show()和TimePickerDialog.show()可以弹出日期选择器对话框。
156
157**起始API Level**
158
159API 8
160
161**变更发生版本**
162
163从OpenHarmony 5.1.0.45开始。
164
165**变更的接口/组件**
166
167TimePickerDialog和DatePickerDialog组件。
168
169**适配指导**
170
171DatePickerDialog和TimePickerDialog调用show()方法,参数缺省时,可弹出默认样式的对话框。
172
173## cl.arkui.4 Gauge设置第一个颜色占比过小时绘制效果更改
174
175**访问级别**
176
177公开接口
178
179**变更原因**
180
181Gauge设置第一个颜色占比过小时绘制效果不符合UX效果。
182
183**变更影响**
184
185此变更无需应用适配。
186
187| 变更前                                                                                                                     | 变更后                                                                                                                   |
188| -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
189| 设置第一个颜色占比过小时,第一个圆环未被正确裁切,出现逆时针向0的方向绘制的情况。<br>![gauge_before](figures/gauge_before.png)| 设置第一个颜色占比过小时,第一个圆环绘制正常,能被正常裁切。<br>![gauge_after](figures/gauge_after.png) |
190
191**起始API Level**
192
19311
194
195**变更发生版本**
196
197从OpenHarmony 5.1.0.45 版本开始。
198
199**变更的接口/组件**
200
201Gauge。
202
203**适配指导**
204
205展示效果变更,无需适配,但应注意变更后的效果是否符合开发者预期。
206
207## cl.arkui.5 Repeat VirtualScroll 支持二级缓存冻结
208
209**访问级别**
210
211公开接口
212
213**变更原因**
214
215开发者使用Repeat VirtualScroll,进入二级缓存(复用池)中的组件是为了通过更新其各项属性后作为新组件使用,在更新成为新组件之前不应该被刷新。
216
217**变更影响**
218
219此变更不涉及应用适配。
220
221变更前:启用组件冻结,状态变量改动会触发二级缓存中的组件刷新,并执行@Monitor对应方法。
222
223变更后:启用组件冻结,状态变量改动不会触发二级缓存中的组件刷新,不执行@Monitor对应方法。
224
225举例说明,执行以下用例:
226
227```ts
228@Entry
229@ComponentV2
230struct RepeatVirtualScrollDemo {
231  @Local simpleList: Array<string> = [];
232  @Local bgColor: Color = Color.Pink;
233
234  aboutToAppear(): void {
235    for (let i = 0; i < 7; i++) {
236      this.simpleList.push(`item${i}`);
237    }
238  }
239
240  build() {
241    Column() {
242      Row() {
243        Button(`Reduce length to 5`)
244          .onClick(() => {
245            this.simpleList = this.simpleList.slice(0, 5);
246          })
247        Button(`Change bgColor`)
248          .onClick(() => {
249            this.bgColor = this.bgColor == Color.Pink ? Color.Blue : Color.Pink;
250          })
251      }
252
253      List() {
254        Repeat(this.simpleList)
255          .each((obj: RepeatItem<string>) => {
256          })
257          .key((item: string, index: number) => item)
258          .virtualScroll({ totalCount: this.simpleList.length })
259          .templateId(() => `a`)
260          .template(`a`, (ri) => {
261            ChildComponent({
262              message: ri.item,
263              bgColor: this.bgColor
264            })
265          }, { cachedCount: 2 })
266      }
267      .cachedCount(0)
268      .height(500)
269    }
270    .height(`100%`)
271  }
272}
273
274@ComponentV2({ freezeWhenInactive: true })
275struct ChildComponent {
276  @Param @Require message: string;
277  @Param @Require bgColor: Color;
278  // 支持后二级缓存中的组件不刷新,不会打印相应日志
279  @Monitor(`bgColor`)
280  onMessageChange(monitor: IMonitor) {
281    monitor.dirty.forEach((path: string) => {
282      console.log(`repeat---${path} change from ${monitor.value(path)?.before} to ${monitor.value(path)?.now}`)
283    })
284  }
285
286  build() {
287    Text(`[a]: ${this.message}`)
288      .fontSize(50)
289      .backgroundColor(this.bgColor)
290  }
291}
292```
293
294**起始API Level**
295
29612
297
298**变更发生版本**
299
300从OpenHarmony 5.1.0.45 版本开始。
301
302**变更的接口/组件**
303
304Repeat freezeWhenInactive。
305
306**适配指导**
307
308展示效果不变,@Monitor监听属性变化执行方法次数会减少。如果需要刷新缓存中的数据,可以关闭组件冻结。
309
310```ts
311// 关闭组件冻结,freezeWhenInactive设置为false
312@ComponentV2({ freezeWhenInactive: false })
313struct ChildComponent {
314  @Param @Require message: string;
315  @Param @Require bgColor: Color;
316  // 关闭冻结后,二级缓存中的组件会刷新,并打印相应日志
317  @Monitor(`bgColor`)
318  onMessageChange(monitor: IMonitor) {
319    monitor.dirty.forEach((path: string) => {
320      console.log(`repeat---${path} change from ${monitor.value(path)?.before} to ${monitor.value(path)?.now}`)
321    })
322  }
323
324  build() {
325    Text(`[a]: ${this.message}`)
326      .fontSize(50)
327      .backgroundColor(this.bgColor)
328  }
329}
330```
331
332## cl.arkui.6 Image组件的borderRadius接口支持百分比输入
333
334**访问级别**
335
336公开接口
337
338**变更原因**
339
340为了增强功能的灵活性,Image组件的borderRadius接口支持百分比输入,功能与通用属性的borderRadius对齐。
341
342**变更影响**
343
344此变更涉及应用适配。
345
346| 变更前                                                                                                                     | 变更后                                                                                                                   |
347| -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
348| Image组件的borderRadius接口输入百分比不生效。<br>![borderRadiusNotSupportPercentage](figures/borderRadiusNotSupportPercentage.png)| Image组件的borderRadius接口输入百分比,百分比依据组件宽度生效。<br>![borderRadiusSupportPercentage](figures/borderRadiusSupportPercentage.png) |
349
350**起始API Level**
351
3527
353
354**变更发生版本**
355
356从OpenHarmony SDK 5.1.0.45 版本开始。
357
358**变更的接口/组件**
359
360Image组件的borderRadius接口。
361
362**适配指导**
363
364如果代码中依赖borderRadius传入百分比不生效的行为,建议传入0,或者不设置borderRadius,例如:borderRadius(0)。
365
366```ts
367@Entry
368@Component
369struct Index {
370  build() {
371    Column() {
372      Image($r("app.media.startIcon"))
373        .width(100)
374        .height(100)
375        .borderRadius("10%")
376    }
377    .height('100%')
378    .width('100%')
379  }
380}
381```
382
383## cl.arkui.7 ImageSpan组件borderRadius边框圆角属性Modifier设置变更
384
385**访问级别**
386
387公开接口
388
389**变更原因**
390
391ImageSpan组件的borderRadius边框圆角属性通过Modifier设置不生效,边框实际不显示圆角效果。
392
393**变更影响**
394
395此变更不涉及应用适配。
396
397| 变更前                                                                                           | 变更后                                                                                    |
398| ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
399| ImageSpan组件borderRadius边框圆角属性通过Modifier设置不生效。<br>![imageSpan-border-radius-before](figures/imageSpan-border-radius-before.png)| ImageSpan组件borderRadius边框圆角属性通过Modifier设置生效。<br>![imageSpan-border-radius-after](figures/imageSpan-border-radius-after.png) |
400
401**起始API Level**
402
403ImageSpanModifier : 12
404
405**变更发生版本**
406
407从OpenHarmony SDK 5.1.0.45开始。
408
409**变更的接口/组件**
410
411ImageSpanModifier接口的borderRadius属性
412
413**适配指导**
414
415无需应用适配,变更后ImageSpan组件的borderRadius边框圆角在Modifier接口设置生效,效果与开发者实际设置的圆角值显示一致。
416
417## cl.arkui.8 Search组件回车键类型为EnterKeyType.NEW_LINE(换行)时onSubmit回调中执行keepEditableState()函数,参数缺省时的行为变更
418
419**访问级别**
420
421公开接口
422
423**变更原因**
424
425开发者通过Search组件的onSubmit接口设置自定义提交事件,并在keepEditableState()函数中配置是否收起键盘。当回车键类型设置为EnterKeyType.NEW_LINE(换行)时,无论是否设置keepEditableState()接口,用户点击输入法软键盘上的换行按钮或按下回车键,键盘均不会收起。
426
427**变更影响**
428
429此变更不涉及应用适配。
430
431变更前:回车键类型为EnterKeyType.NEW_LINE(换行),不设置keepEditableState()接口,用户点击输入法软键盘上的换行按钮或按下回车键,Search组件保持编辑态。
432
433变更后:回车键类型为EnterKeyType.NEW_LINE(换行),不设置keepEditableState()接口,用户点击输入法软键盘上的换行按钮或按下回车键,Search组件退出编辑态。
434
435**起始API Level**
436
43712
438
439**变更发生版本**
440
441从OpenHarmony 5.1.0.45 版本开始。
442
443**变更的接口/组件**
444
445onSubmit事件keepEditableState()接口
446
447**适配指导**
448
449使用Search组件onSubmit接口设置自定义提交事件。触发onSubmit时,如果回车键类型为EnterKeyType.NEW_LINE(换行)且未设置keepEditableState()接口,键盘退出编辑态。举例说明:
450
451```ts
452import { SymbolGlyphModifier } from '@kit.ArkUI'
453
454@Entry
455@Component
456struct EnterKeyTypeIsNewLineDemo {
457  mySearchController: SearchController = new SearchController()
458
459  build() {
460    Column() {
461      Text('Search').fontSize(25).fontColor(Color.Blue)
462      Search({ value: '', placeholder: 'Type to search ...', controller: this.mySearchController })
463        .searchIcon(new SymbolGlyphModifier($r('sys.symbol.magnifyingglass')).fontColor([Color.Red]))
464        .searchButton('SEARCH')
465        // 回车键类型设置为EnterKeyType.NEW_LINE(换行)
466        .enterKeyType(EnterKeyType.NEW_LINE)
467        .onSubmit((value: string, event?: SubmitEvent) => {
468          // 设置键盘保持编辑态,否则,默认情况键盘退出编辑态
469          event?.keepEditableState()
470        })
471    }.width('100%').margin({ top: 100 })
472  }
473}
474```
475
476## cl.arkui.9 TextInput/TextArea组件border属性dashGap、dashWidth参数Modifier设置变更
477
478**访问级别**
479
480公开接口
481
482**变更原因**
483
484TextInput/TextArea组件的border属性中,虚线参数dashGap和dashWidth通过Modifier设置后未生效。当前TextInput/TextArea组件的实际虚线边框显示为默认效果,而非Modifier设置的值。
485
486**变更影响**
487
488此变更不涉及应用适配。
489
490| 变更前                                                                                           | 变更后                                                                                      |
491| ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
492| TextInput/TextArea组件的border属性中,虚线参数dashGap和dashWidth通过Modifier设置后未生效。![textInput-textArea-border-dash-before](figures/textInput-textArea-border-dash-before.png)| TextInput/TextArea组件的border属性中,虚线参数dashGap和dashWidth通过Modifier设置后生效。![textInput-textArea-border-dash-after](figures/textInput-textArea-border-dash-after.png) |
493
494**起始API Level**
495
496TextInputModifier :12
497
498TextAreaModifier :12
499
500**变更发生版本**
501
502从OpenHarmony SDK 5.1.0.45开始。
503
504**变更的接口/组件**
505
506TextInputModifier、TextAreaModifier接口的border属性dashGap、dashWidth参数
507
508**适配指导**
509
510无需应用适配,变更后TextInput/TextArea组件的border属性虚线参数dashGap、dashWidth通过Modifier设置生效,显示虚线边框间距和长度效果与开发者设置值一致。
511