1# ArkUI子系统Changelog
2
3## cl.arkui.1 自定义弹窗避让软键盘行为优化
4
5**访问级别**
6
7公开接口
8
9**变更原因**
10
11从API version 12开始,将自定义弹窗避让软键盘行为优化为弹窗到达极限位置之后进行高度压缩。
12
13**变更影响**
14
15该变更为非兼容性变更。
16
17API version 11及以前,自定义弹窗避让软键盘时仅抬起软键盘对应高度,横屏等高度不足场景或自定义弹窗高度较大场景下,会出现弹窗超出屏幕显示的情况。
18
19API version 12及以后,将自定义弹窗避让软键盘行为优化为弹窗到达极限位置之后进行高度压缩,而不会使弹窗超出极限位置显示。
20
21**起始API Level**
22
23CustomDialogController: API7
24openCustomDialog(options: CustomDialogOptions): API11
25openCustomDialog<T extends Object>(dialogContent: ComponentContent<T>, options?: promptAction.BaseDialogOptions): API12
26
27**变更发生版本**
28
29从OpenHarmony SDK 5.0.0.29 版本开始。
30
31**变更的接口/组件**
32
33自定义弹窗
34
35**适配指导**
36
37默认行为变更,无需适配,但应注意变更后的行为是否对整体应用逻辑产生影响。
38
39## cl.arkui.2 Badge组件显隐时增加缩放动效
40
41**访问级别**
42
43公开接口
44
45**变更原因**
46
47给Badge组件显隐时增加缩放动画,代替简单的出现与消失
48
49**变更影响**
50
51该变更为非兼容性变更。
52
53API version 11及以前:Badge组件显隐时没有缩放动效。
54
55API version 12及以后:Badge组件前后状态相同时不缩放,显隐时增加缩放动效。
56
57**起始 API Level**
58
597
60
61**变更发生版本**
62
63从OpenHarmony SDK 5.0.0.29开始。
64
65**适配指导**
66
67默认样式变更调整,无需适配。
68
69## cl.arkui.3 TimePickerDialog、DatePickerDialog支持设置前导零
70
71**访问级别**
72
73公开接口
74
75**变更原因**
76
77开发者给TimePickerDialog、DatePickerDialog设置是否需要前导零。
78
79**变更影响**
80
81该变更为不兼容变更,只影响TimePickerDialog、DatePickerDialog组件的默认样式。
82
83- 变更前: TimePickerDialog、DatePickerDialog组件12小时制小时默认有前置零。
84
85- 变更后: TimePickerDialog、DatePickerDialog组件12小时制小时默认没有前置零。
86
87  如下图所示为变更前后效果对比:
88
89 | 变更前 | 变更后 |
90|---------|---------|
91| ![](figures/TimePickerDialog_Before.png)  |  ![](figures/TimePickerDialog_After.png)  |
92
93 | 变更前 | 变更后 |
94|---------|---------|
95| ![](figures/DatePickerDialog_Before.png)  |  ![](figures/DatePickerDialog_After.png)  |
96
97**起始API Level**
98
9912
100
101**变更发生版本**
102
103从OpenHarmony SDK 5.0.0.29开始。
104
105**适配指导**
106
107默认行为变更,无需适配,但应注意时间窗口是否按照设置显示前导零。
108
109## cl.arkui.4 构造@ComponentV2修饰的自定义组件时,增加对常规变量的构造赋值校验
110
111**访问级别**
112
113公开接口
114
115**变更原因**
116
117该变更为不兼容变更。
118
119在@ComponentV2修饰的自定义组件中使用@Local、@Provider()、@Consumer()、常规变量(没有任何装饰器修饰的,不涉及更新的普通变量),在构造的时候传参赋值,进行校验并输出错误信息。
120
121**变更影响**
122
123执行下列用例:
124
125```ts
126@Entry
127@ComponentV2
128struct v2DecoratorInitFromParent {
129  build() {
130    Column() {
131      testChild({
132        regular_value: "hello",
133        local_value: "hello",
134        provider_value: "hello",
135        consumer_value: "hello"
136      })
137    }
138  }
139}
140
141@ComponentV2
142struct testChild {
143  regular_value: string = "hello";
144  @Local local_value: string = "hello";
145  @Provider() provider_value: string = "hello";
146  @Consumer() consumer_value: string = "hello";
147  build() {}
148}
149```
150
151变更前无报错
152
153变更后报错信息为:
154
155Property 'regular_value' in the custom component 'testChild' cannot initialize here (forbidden to specify).
156Property 'local_value' in the custom component 'testChild' cannot initialize here (forbidden to specify).
157Property 'provider_value' in the custom component 'testChild' cannot initialize here (forbidden to specify).
158Property 'consumer_value' in the custom component 'testChild' cannot initialize here (forbidden to specify).
159
160**起始API Level**
161
162不涉及API变更
163
164**变更发生版本**
165
166从OpenHarmony SDK 5.0.0.29开始。
167
168**适配指导**
169
170如果开发者不按规范使用对应范式,则需按日志提示信息进行修改。
171
172## cl.arkui.5 Video切换视频源时显示预览图
173
174**访问级别**
175
176公开接口
177
178**变更原因**
179
180视频源切换时预览图规格表现不一致。
181
182**变更影响**
183
184该变更为非兼容性变更。
185
186变更前:视频播放后执行视频源切换时不显示预览图,再次执行视频源切换时显示预览图。
187
188变更后:每次执行视频源切换都会显示预览图。
189
190**起始API Level**
191
1927
193
194**变更发生版本**
195
196从OpenHarmony SDK 5.0.0.29开始。
197
198**适配指导**
199
200如果应用中使用了Video组件中的previewUri属性,且存在视频源切换行为,开发者需按照预览图是否展示的最新逻辑进行适配。
201
202## cl.arkui.6 BindSheet半模态组件横屏支持设置档位与高度
203
204**访问级别**
205
206公开接口
207
208**变更原因**
209
210手机横屏时,BindSheet支持开发者设置挡位和高度
211
212**变更影响**
213
214该变更为不兼容性变更。
215
216API version 11及以前:bindSheet在手机横屏时不支持设置挡位和高度,默认高度距离横屏窗口顶部8vp。
217
218API version 12及以后:bindSheet在手机横屏时支持开发者设置挡位和高度,最大高度距离横屏窗口顶部8vp。
219
220**起始API Level**
221
22210
223
224**变更发生版本**
225
226从OpenHarmony SDK 5.0.0.29开始。
227
228**适配指导**
229
230默认行为变更,需应用适配。横竖屏设置挡位规则保持一致,参考detents属性的设置请查阅[半模态组件](../../../application-dev/reference/apis-arkui/arkui-ts/ts-universal-attributes-sheet-transition.md)文档进行适配。
231
232## cl.arkui.7 RichEditor/TextInput/TextArea/Search组件编辑态长按时显示单光标
233
234**访问级别**
235
236公开接口
237
238**变更原因**
239
240RichEditor/TextInput/TextArea/Search组件在编辑态下,若检测到手指长按后进行move操作,则在当前手指触摸位置显示光标。
241
242**变更影响**
243
244该变更为不兼容变更,只影响RichEditor/TextInput/TextArea/Search组件编辑态长按逻辑。
245
246- 变更前: RichEditor/TextInput/TextArea/Search组件编辑态长按时选中触摸内容,并出现双手柄。
247
248- 变更后: RichEditor/TextInput/TextArea/Search组件编辑态长按时显示单光标(涉及光标动效),而不会选中触摸内容。
249
250  如下图所示为变更前后效果对比:
251
252 | 变更前 | 变更后 |
253|---------|---------|
254| ![](figures/text_select.jpg)  |  ![](figures/text_single.jpg)  |
255
256**起始API Level**
257
25811
259
260**变更发生版本**
261
262从OpenHarmony SDK 5.0.0.29开始。
263
264**适配指导**
265
266UX统一文本编辑交互规范,开发者无需适配。
267
268## cl.arkui.8 Dialog组件内AlertDialogParam弹窗类型和ActionSheetOptions弹窗类型支持镜像能力
269
270**访问级别**
271
272公开接口
273
274**变更原因**
275
276Dialog组件内AlertDialogParam弹窗类型和ActionSheetOptions弹窗类型支持镜像能力。
277
278**变更影响**
279
280该变更为不兼容变更。
281
282- 变更前:
283
284  Dialog组件内AlertDialogParam弹窗类型的cornerRadius接口不支持LocalizedBorderRadiuses类型设置圆角。
285
286  Dialog组件内AlertDialogParam弹窗类型的borderColor接口不支持LocalizedEdgeColors类型设置颜色。
287
288  Dialog组件内AlertDialogParam弹窗类型的borderWidth接口不支持LocalizedEdgeWidths类型设置宽度。
289
290  Dialog组件内ActionSheetOptions弹窗类型的cornerRadius接口不支持LocalizedBorderRadiuses类型设置圆角。
291
292  Dialog组件内ActionSheetOptions弹窗类型的borderColor接口不支持LocalizedEdgeColors类型设置颜色。
293
294  Dialog组件内ActionSheetOptions弹窗类型的borderWidth接口不支持LocalizedEdgeWidths类型设置宽度。
295
296- 变更后:
297
298  Dialog组件内AlertDialogParam弹窗类型的cornerRadius接口支持LocalizedBorderRadiuses类型设置圆角。
299
300  Dialog组件内AlertDialogParam弹窗类型的borderColor接口支持LocalizedEdgeColors类型设置颜色。
301
302  Dialog组件内AlertDialogParam弹窗类型的borderWidth接口支持LocalizedEdgeWidths类型设置宽度。
303
304  Dialog组件内ActionSheetOptions弹窗类型的cornerRadius接口支持LocalizedBorderRadiuses类型设置圆角。
305
306  Dialog组件内ActionSheetOptions弹窗类型的borderColor接口支持LocalizedEdgeColors类型设置颜色。
307
308  Dialog组件内ActionSheetOptions弹窗类型的borderWidth接口支持LocalizedEdgeWidths类型设置宽度。
309
310AlertDialogParam弹窗类型的cornerRadius:
311 | 变更前 | 变更后 |
312|---------|---------|
313| ![](figures/AlertDialog_cornerRadius_before.png)  |  ![](figures/AlertDialog_cornerRadius_after.png)  |
314
315AlertDialogParam弹窗类型的borderColor:
316 | 变更前 | 变更后 |
317|---------|---------|
318| ![](figures/AlertDialog_borderColor_before.png)  |  ![](figures/AlertDialog_borderColor_after.png)  |
319
320AlertDialogParam弹窗类型的borderWidth:
321 | 变更前 | 变更后 |
322|---------|---------|
323| ![](figures/AlertDialog_borderWith_before.png)  |  ![](figures/AlertDialog_borderWith_after.png)  |
324
325ActionSheetOptions弹窗类型的cornerRadius:
326 | 变更前 | 变更后 |
327|---------|---------|
328| ![](figures/ActionSheet_cornerRadius_before.png)  |  ![](figures/ActionSheet_cornerRadius_after.png)  |
329
330ActionSheetOptions弹窗类型的borderColor:
331 | 变更前 | 变更后 |
332|---------|---------|
333| ![](figures/ActionSheet_borderColor_before.png)  |  ![](figures/ActionSheet_borderColor_after.png)  |
334
335ActionSheetOptions弹窗类型的borderWidth:
336 | 变更前 | 变更后 |
337|---------|---------|
338| ![](figures/ActionSheet_borderWith_before.png)  |  ![](figures/ActionSheet_borderWith_after.png)  |
339
340**起始API Level**
341
342API 12
343
344**变更发生版本**
345
346从OpenHarmony SDK 5.0.0.29开始。
347
348**变更的接口/组件**
349
350Dialog组件内AlertDialogParam弹窗类型的cornerRadius、borderColor、borderWidth接口;
351Dialog组件内ActionSheetOptions弹窗类型的cornerRadius、borderColor、borderWidth接口。
352
353**适配指导**
354
355开发者可以在Dialog内通过AlertDialogParam弹窗类型的cornerRadius接口弹窗设置圆角,且当参数类型为LocalizedBorderRadiuses类型时,支持随语言习惯改变布局顺序。
356
357开发者可以在Dialog内通过AlertDialogParam弹窗类型的borderColor接口设置边框颜色,且当参数类型为LocalizedEdgeColors类型时,支持随语言习惯改变布局顺序。
358
359开发者可以在Dialog内通过AlertDialogParam弹窗类型的borderWidth接口设置边框宽度,且当参数类型为LocalizedEdgeWidths类型时,支持随语言习惯改变布局顺序。
360
361开发者可以在Dialog内通过ActionSheetOptions弹窗类型的cornerRadius接口弹窗设置圆角,且当参数类型为LocalizedBorderRadiuses类型时,支持随语言习惯改变布局顺序。
362
363开发者可以在Dialog内通过ActionSheetOptions弹窗类型的borderColor接口设置边框颜色,且当参数类型为LocalizedEdgeColors类型时,支持随语言习惯改变布局顺序。
364
365开发者可以在Dialog内通过ActionSheetOptions弹窗类型的borderWidth接口设置边框宽度,且当参数类型为LocalizedEdgeWidths类型时,支持随语言习惯改变布局顺序。
366
367
368```ts
369import { LengthMetrics } from '@kit.ArkUI';
370
371@Entry
372@Component
373struct Example {
374  build() {
375    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
376      Button('Click to Show')
377        .onClick(() => {
378          AlertDialog.show(
379            {
380              title: 'title',
381              message: 'text',
382              autoCancel: true,
383              alignment: DialogAlignment.Center,
384              offset: { dx: 0, dy: -50 },
385              gridCount: 3,
386              width: 300,
387              height: 200,
388              borderWidth:      // 新增API示例
389              {
390                top: LengthMetrics.px(60),
391                end: LengthMetrics.px(30),
392                bottom: LengthMetrics.px(60),
393                start: LengthMetrics.px(60)
394              },
395              cornerRadius:      // 新增API示例
396              {
397                topStart: LengthMetrics.vp(120),
398                topEnd: LengthMetrics.vp(32),
399                bottomStart: LengthMetrics.vp(32),
400                bottomEnd: LengthMetrics.vp(32)
401              },
402              borderColor:     // 新增API示例
403              {
404                top: Color.Black,
405                end: Color.Red,
406                bottom: Color.Black,
407                start: Color.Black
408              },
409              backgroundColor: Color.White,
410            }
411          )
412          ActionSheet.show({
413            title: 'ActionSheet title',
414            subtitle: 'ActionSheet subtitle',
415            message: 'message',
416            autoCancel: true,
417
418            alignment: DialogAlignment.Bottom,
419            offset: { dx: 0, dy: -10 },
420            borderWidth:      // 新增API示例
421            {
422              top: LengthMetrics.px(60),
423              end: LengthMetrics.px(30),
424              bottom: LengthMetrics.px(60),
425              start: LengthMetrics.px(60)
426            },
427            cornerRadius:      // 新增API示例
428            {
429              topStart: LengthMetrics.vp(120),
430              topEnd: LengthMetrics.vp(32),
431              bottomStart: LengthMetrics.vp(32),
432              bottomEnd: LengthMetrics.vp(32)
433            },
434            borderColor:     // 新增API示例
435            {
436              top: Color.Black,
437              end: Color.Red,
438              bottom: Color.Black,
439              start: Color.Black
440            },
441            sheets: [
442              {
443                title: 'apples',
444                action: () => {
445                  console.log('apples')
446                }
447              },
448              {
449                title: 'bananas',
450                action: () => {
451                  console.log('bananas')
452                }
453              },
454              {
455                title: 'pears',
456                action: () => {
457                  console.log('pears')
458                }
459              }
460            ]
461          })
462        })
463    }.width('100%')
464    .height('100%')
465  }
466}
467```