• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# ArkUI子系统Changelog
2
3## cl.arkui.1 半模态底部样式最大高度默认避让状态栏安全区
4
5**访问级别**
6
7公开接口
8
9**变更原因**
10
11UX规格变更。
12
13半模态底部样式最大高度默认避让状态栏安全区。
14
15**变更影响**
16
17此变更不涉及应用适配。
18
19场景1:竖屏下,状态栏隐藏时,半模态底部样式最大高度也需要避让状态栏安全区。
20
21- 变更前:状态栏隐藏时,半模态底部样式最大高度距离屏幕上边界8vp,未避让状态栏安全区。
22- 变更后:API version 18及以后,状态栏隐藏时,半模态底部样式最大高度距离状态栏下边界8vp,避让状态栏安全区。该样式的最大高度为屏幕高度 - (窗口状态栏安全区高度 + 安全间距8vp)。
23
24| 变更前 | 变更后 |
25|------ |--------|
26|![verticalSheet1](figures/verticalSheet1.png)|![verticalSheet2](figures/verticalSheet2.png)|
27
28场景2:横屏下,状态栏不隐藏时,半模态底部样式最大高度也需要避让状态栏安全区。
29
30- 变更前:状态栏不隐藏时,半模态底部样式最大高度距离屏幕上边界8vp,未避让状态栏安全区,且与状态栏区域重合。
31- 变更后:API version 18及以后,状态栏不隐藏时,半模态底部样式最大高度距离状态栏下边界8vp,避让状态栏安全区。该样式的最大高度为屏幕高度 - (窗口状态栏安全区高度 + 安全间距8vp)。
32
33| 变更前 | 变更后 |
34|------ |--------|
35|![horizontalSheet1](figures/horizontalSheet1.jpg)|![horizontalSheet2](figures/horizontalSheet2.jpg)|
36
37**起始API Level**
38
3911
40
41**变更发生版本**
42
43从OpenHarmony SDK 5.1.0.54 版本开始。
44
45**变更的接口/组件**
46
47bindSheet的LARGE属性
48
49**适配指导**
50
51若开发者自定义的builder面板内容是固定高度,建议使用100%布局,变更后自定义的内容也可以自动撑满半模态面板。
52
53若按变更前的最大高度规格限制的builder内容,需要变更为新规格计算。
54
55## cl.arkui.2 sharedTransition在id入参为undefined或空字符串时的行为变更
56
57**访问级别**
58
59公开接口
60
61**变更原因**
62
63sharedTransition的id从非空字符串变为空字符串或undefined时,无法实现清空共享元素转场id的效果。
64
65**变更影响**
66
67此变更涉及应用适配,API18之前不变,API18及以后,发生变更。
68
69变更前:sharedTransition的id从非空字符串变为空字符串或undefined时,会维持之前的有效id值。
70
71变更后:sharedTransition的id从非空字符串变为空字符串或undefined时,会将共享元素转场id置为空字符串,达到取消sharedTransition匹配的效果。
72
73**起始API Level**
74
75API 7
76
77**变更发生版本**
78
79从OpenHarmony SDK 5.1.0.54版本开始。
80
81**变更的接口/组件**
82
83common.d.ts文件的sharedTransition接口
84
85**适配指导**
86
87开发者如果希望同一组件的sharedTransition的id维持有效值不变,且开发者已经主动设置id为空字符串或undefined时,需要适配。适配方式为不更改sharedTransition的id,维持之前的有效值不变。其余情况无需适配。
88
89
90## cl.arkui.3 bindSheet在2in1设备中默认避让窗口安全区
91
92**访问级别**
93
94公开接口
95
96**变更原因**
97
98UX规格变更。
99
100半模态内容需默认避让窗口安全区,否则会有重叠区域。
101
102**变更影响**
103
104此变更涉及应用适配。
105
106当自由窗口标题栏类型为悬浮标题栏时,需要半模态面板默认避让标题安全区。
107
108场景1:半模态居中弹窗样式
109
110- 变更前:半模态居中弹窗样式的面板最大高度为窗口高度的90%。
111- 变更后:该样式的最大高度为窗口高度 - (窗口安全区高度 + 安全间距8vp) * 2。
112
113| 变更前 | 变更后 |
114|------ |--------|
115|![sheetCenter1](figures/sheetCenter1.png)|![sheetCenter2](figures/sheetCenter2.png)|
116
117场景2:半模态底部弹窗样式
118
119- 变更前:半模态底部弹窗样式的面板最大高度为窗口高度 - 8vp。
120- 变更后:该样式的最大高度为窗口高度 - (窗口安全区高度 + 安全间距8vp)。
121
122| 变更前 | 变更后 |
123|------ |--------|
124|![sheetBottom1](figures/sheetBottom1.png)|![sheetBottom2](figures/sheetBottom2.png)|
125
126**起始API Level**
127
12811
129
130**变更发生版本**
131
132从OpenHarmony SDK 5.1.0.54版本开始。
133
134**变更的接口/组件**
135
136bindSheet的preferType属性
137
138**适配指导**
139
140若开发者自定义的builder面板内容是固定高度,建议使用100%布局,变更后自定义的内容也可以自动撑满半模态面板。
141
142若按变更前的最大高度规格限制的builder内容,需要变更为新规格计算。
143
144## cl.arkui.4 XComponent设置为Texture模式使用blendMode接口的行为由不生效变更为正常生效
145**访问级别**
146
147公开接口
148
149**变更原因**
150
151用户使用XComponent组件并设置为Texture模式时,使用blendMode接口没有效果,不符合接口正常规格,需要变更为blendMode接口正常生效。
152
153**变更影响**
154
155此变更涉及应用适配。
156
157变更前:XComponent组件设置为Texture模式,使用blendMode接口不生效。
158
159变更后:XComponent组件设置为Texture模式,使用blendMode接口正常生效。
160
161**起始API Level**
162
163API 11
164
165**变更发生版本**
166
167从OpenHarmony SDK 5.1.0.54开始。
168
169**变更的接口/组件**
170
171common.d.ts文件的blendMode接口。
172
173**适配指导**
174
175需适配场景:
176当应用使用XComponent组件并设置为Texture模式(`type`设置为`XComponentType.TEXTURE`)时,使用blendMode接口,可能会出现显示效果变更前后不一致的情况,以下是使用场景示意:
177
178```ts
179@Entry
180@Component
181struct Index {
182  private contextOne: Record<string, () => void> = {};
183  private contextTwo: Record<string, () => void> = {};
184
185  build() {
186    Column() {
187      Stack() {
188        XComponent({
189          id: 'circle',
190          type: XComponentType.TEXTURE,
191          libraryname: 'nativerender'
192        }).height(50)
193          .backgroundColor(Color.Transparent)
194          .onLoad((contextOne?: object | Record<string, () => void>) => {
195            if (contextOne) {
196              this.contextOne = contextOne as Record<string, () => void>;
197            }
198          })
199
200        XComponent({
201          id: 'rect',
202          type: XComponentType.TEXTURE,
203          libraryname: 'nativerender'
204        }).height(50)
205          .backgroundColor(Color.Transparent)
206          .onLoad((contextTwo?: object | Record<string, () => void>) => {
207            if (contextTwo) {
208              this.contextTwo = contextTwo as Record<string, () => void>;
209            }
210          })
211          .blendMode(BlendMode.XOR) // 变更后生效,若需保持变更前行为,可使用BlendMode.None入参
212      }
213      .height(50)
214      .onClick(() => {
215        if (this.contextOne) {
216          this.contextOne.drawCircle();
217        }
218        if (this.contextTwo) {
219          this.contextTwo.drawRectangle();
220        }
221      })
222    }
223    .blendMode(BlendMode.SRC_OVER, BlendApplyType.OFFSCREEN)
224    .width('100%')
225    .height('100%')
226  }
227}
228```
229| 混合类型 | 变更前 | 变更后 |
230| ------- | - | ---- |
231| BlendMode.XOR | ![demoBlendModeXor](figures/demoBlendModeNone.png) | ![demoBlendModeXor](figures/demoBlendModeXor.png) |
232| BlendMode.NONE  | ![demoBlendModeNone](figures/demoBlendModeNone.png) | ![demoBlendModeNone](figures/demoBlendModeNone.png) |
233
234应用若需保持变更前行为,XComponent组件上的blendMode接口使用BlendMode.None入参即可。
235
236## cl.arkui.5 半模态跟手样式弹窗显示位置避让规则变更
237**访问级别**
238
239公开接口
240
241**变更原因**
242
243基础能力增强,半模态跟手样式弹窗支持开发者自定义弹出方向,并根据位置避让流程决定弹窗最终显示位置
244
245**变更影响**
246
247此变更不涉及应用适配,
248
249变更前行为:半模态跟手样式弹窗默认弹出位置为绑定组件底部,会根据剩余空间情况同绑定组件左边和右边作对齐布局,不做任何半模态面板高度的压缩。
250
251变更后行为:开发者可使用bindOptions中的placement(设置弹窗默认弹出位置,默认值Bottom) 和 placementOnTarget(所有位置均放不下时,是否允许弹窗覆盖在绑定节点上)两个字段,自定义半模态跟手样式弹窗相关的弹出位置信息。半模态跟手样式弹窗在确保指定位置能容纳弹窗尺寸的前提下,优先依据设定的placement展示弹窗。若不可行,则遵循先垂直翻转,后尝试90°水平旋转的规则调整显示位置,以预设方向为下方为例,调整顺序依次为:下、上、右、左。如果设置的对齐方式导致组件布局超出窗口范围,将根据该对齐方式在水平或垂直方向上进行位移,直至组件完全显示在窗口内。如果在四个方向上均无法容纳跟手样式弹窗,处理方式遵循开发者设置的placementOnTarget属性。若属性值为True,将依据设定的placement,向其镜像方向平移,直至弹窗能够完全显示,且允许覆盖在绑定的弹出节点上;若属性值为false,则在四个方向中,选择能够完全展示弹窗宽度且剩余高度最大的方向,通过调整半模态高度以适应当前方向,确保弹窗能够放下,同时保持预设placement对应的对齐方式不变。
252
253| 场景 | 变更前 | 变更后placementOnTarget为true | 变更后placementOnTarget为false |
254|------ |------ |--------|--------|
255|半模态跟手弹窗大小过大导致底部空间不足以容纳弹窗面板|![sheetPopupBefore](figures/sheetPopupBefore.png)|![sheetPopupAfterTrue](figures/sheetPopupAfterTrue.png)|![sheetPopupAfterFalse](figures/sheetPopupAfterFalse.png)|
256
257| 场景 | 变更前 | 变更后 |
258|------ |--------|--------|
259|半模态跟手弹窗弹出位置过于靠近左侧边界导致左侧剩余空间不足以保持同绑定节点居中对齐|![sheetPopupBefore2](figures/sheetPopupBefore2.png)|![sheetPopupAfter2](figures/sheetPopupAfter2.png)|
260|半模态跟手弹窗弹出位置过于靠近右侧边界导致右侧剩余空间不足以保持同绑定节点居中对齐|![sheetPopupBefore3](figures/sheetPopupBefore3.png)|![sheetPopupAfter3](figures/sheetPopupAfter3.png)|
261|半模态绑定的弹出节点在y轴位置上更偏底部,但绑定节点的底部空间不足以容纳半模态弹窗面板,而顶部空间足以容纳|![sheetPopupBefore4](figures/sheetPopupBefore4.png)|![sheetPopupAfter4](figures/sheetPopupAfter4.png)|
262|半模态绑定的弹出节点在x轴位置上更偏左边,但绑定节点的底部、顶部空间不足以容纳半模态弹窗面板,而右边空间足以容纳|![sheetPopupBefore5](figures/sheetPopupBefore5.png)|![sheetPopupAfter5](figures/sheetPopupAfter5.png)|
263|半模态绑定的弹出节点在x轴位置上更偏右边,但绑定节点的底部、顶部、右边空间不足以容纳半模态弹窗面板,而左边空间足以容纳|![sheetPopupBefore6](figures/sheetPopupBefore6.png)|![sheetPopupAfter6](figures/sheetPopupAfter6.png)|
264
265**起始API Level**
266
26711
268
269**变更发生版本**
270
271从OpenHarmony SDK 5.1.0.54 版本开始。
272
273**变更的接口/组件**
274
275bindSheet
276SheetType.POPUP
277
278**适配指导**
279
280默认行为变更,开发者无需适配。若API version 18前,希望实现的效果为位于弹出节点底部并且同弹出节点左对齐或者右对齐,那么在API version 18及以后,可以通过设置字段placement的值为BottomLeft或BottomRight,来实现对应显示效果。
281
282
283## cl.arkui. 6当使用自定义组件名和系统组件属性重名时编译报错变更
284
285**访问级别**
286
287公开接口
288
289**变更原因**
290
291当使用的自定义组件名称与系统组件属性名称相同时,编译过程将依据系统组件属性列表进行校验。如果该属性未在系统组件属性列表中列出,编译过程将无法识别,导致编译后的产物出现问题。
292
293**变更影响**
294
295该变更涉及应用适配。
296
297举例说明,执行以下用例:
298
299```ts
300@Entry
301@Component
302struct enableAnalyzer {
303  build() {
304    Canvas()
305      .enableAnalyzer(true)
306  }
307}
308```
309
310变更前:当开发者定义的自定义组件名称与系统组件属性名称重名时,部分重名名称在编译过程中不会被拦截,导致运行时崩溃。
311
312变更后:当自定义组件名称与系统组件属性名称发生同名冲突时,编译阶段将触发错误拦截机制并报错。
313
314![arkui_pg1](figures/arkui_pg1.PNG)
315
316**起始API Level**
317
318API 10
319
320**变更发生版本**
321
322从OpenHarmony SDK 5.1.0.54开始。
323
324**变更的接口/组件**
325
326ArkUI 系统组件属性API。
327
328**适配指导**
329
330自定义组件名和系统组件属性重名时,编译报错,修改自定义组件名为其他非系统组件属性名即可解决。
331
332修改前:
333
334自定义组件enableAnalyzer和Canvas的enableAnalyzer重名。
335
336```ts
337@Entry
338@Component
339struct enableAnalyzer {
340  build() {
341    Canvas()
342      .enableAnalyzer(true)
343  }
344}
345```
346
347修改后:
348
349将自定义组件名改为任意不和系统组件重名的名称,如EnableAnalyzerComp。
350
351```ts
352@Entry
353@Component
354struct EnableAnalyzerComp {
355  build() {
356    Canvas()
357      .enableAnalyzer(true)
358  }
359}
360```
361