1# ArkUI子系统Changelog 2 3## cl.arkui.1 自定义组件struct装饰器校验信息优化 4 5**访问级别** 6 7公开接口 8 9**变更原因** 10 11之前的报错信息存在冗余,不易理解。 12 13**变更影响** 14 15该变更为兼容性变更。 16 17变更前: 18输出一个警告(WARN)和一个错误(ERROR)日志信息。 19``` 20WARN: ArkTS:WARN File: xx 21A struct should use decorator '@Component' or '@ComponentV2'. 22ERROR: ArkTS:ERROR File:xx 23'TestComponent()' does not meet UI component syntax. 24``` 25 26变更后: 27如果struct没有被(@Entry/@Preview/@ComponentV2/@Component/@CustomDialog/@Reusable)其中一个装饰器装饰,编译报错,只有一个错误(ERROR)日志信息。 28``` 29ERROR: ArkTS:ERROR File:xx 30Decorator '@Component', '@ComponentV2', or '@CustomDialog' is missing for struct 'TestComponent'. 31``` 32错误示例如下: 33```ts 34struct Child { 35 build() { 36 Column() { 37 Text("hello Child") 38 } 39 } 40} 41 42@Entry 43@Component 44struct Child { 45 build() { 46 Column() { 47 Child() 48 } 49 } 50} 51``` 52 53**起始API Level** 54 55不涉及API变更 56 57**变更发生版本** 58 59从OpenHarmony SDK 5.0.0.28开始。 60 61**适配指导** 62 63如果应用代码未发生变化,则不需要适配。 64## cl.arkui.2 增加方法装饰器的校验 65 66**访问级别** 67 68公开接口 69 70**变更原因** 71 72当开发者错误的使用多个方法装饰器装饰在同一个方法上时,会导致运行时异常,需要在编译阶段提前拦截。 73 74**变更影响** 75 76该变更为非兼容性变更。 77 78变更前: 79当不同的方法装饰器装饰在同一个方法时,编译无日志提示信息。 80 81变更后: 82当不同的方法装饰器装饰在同一个方法时,编译输出报错提示信息。 83``` 84ERROR: ArkTS:ERROR File:xx 85A function can only be decorated by one of the 'AnimatableExtend, Builder, Extend, Styles and Concurrent'. 86ERROR: ArkTS:ERROR File:xx 87The member property or method can not be decorated by multiple built-in decorators. 88``` 89 90错误示例如下: 91```ts 92@Builder 93@Styles 94function testFunc() { 95 Text("hello testFunc") 96} 97 98@Component 99struct TestComponent { 100 101 @Builder 102 @Styles 103 testMethod() { 104 Text("hello testMethod") 105 } 106 107 build() { 108 Column() { 109 Text("hello TestComponent") 110 } 111 } 112} 113``` 114 115变更前: 116当相同的内置方法装饰器(@AnimatableExtend/@Builder/@Extend/@Styles/@Concurrent)装饰在同一个方法时,编译无日志提示信息。 117 118变更后: 119当相同的内置方法装饰器(@AnimatableExtend/@Builder/@Extend/@Styles/@Concurrent)装饰在同一个方法时,编译输出警告日志提示信息。 120``` 121WARN: ArkTS:WARN File: xx 122Duplicate decorators for function are not allowed. 123``` 124 125错误示例如下: 126```ts 127@Builder 128@Builder 129function testFunc() { 130 Text("hello testFunc") 131} 132``` 133 134**起始API Level** 135 136不涉及API变更 137 138**变更发生版本** 139 140从OpenHarmony SDK 5.0.0.28开始。 141 142**适配指导** 143 144如果开发者不按规范使用对应范式,则需按日志提示信息进行修改。 145 146## cl.arkui.3 bindPopup在窗口失焦后不消失 147 148**访问级别** 149 150公开接口 151 152**变更原因** 153 154开发者不希望popup所在的窗口失去焦点后,popup会自动消失 155 156**变更影响** 157 158该变更为非兼容性变更。 159 160变更前: 161popup所在窗口失焦时,popup会自动消失。 162 163变更后: 164popup所在窗口失焦时,popup不会自动消失。 165 166 167**起始API Level** 168 169不涉及API变更 170 171**变更发生版本** 172 173从OpenHarmony SDK 5.0.0.28开始。 174 175**适配指导** 176 177气泡的关闭需要用户自行决定。如果出现之前版本某一操作后popup消失,现版本不消失的现象时,用户可以检查现象前后窗口焦点是否发生了变化,如果发生变化,现版本需要用户自行将isShow属性设置为false来关闭popup。 178 179## cl.arkui.4 TextInput/TextArea组件设置宽度为auto时,最小值为16vp 180 181**访问级别** 182 183公开接口 184 185**变更原因** 186 187TextInput/TextArea组件设置宽度为auto并且内容为空时,组件消失。 188 189**变更影响** 190 191该变更为兼容性变更。 192 193变更前: 194TextInput/TextArea组件设置宽度为auto并且内容为空时,组件消失。 195 196变更后: 197TextInput/TextArea组件设置宽度为auto并且内容为空时,组件最小宽度为16vp。 198 199**起始API Level** 200 201不涉及API变更 202 203**变更发生版本** 204 205从OpenHarmony SDK 5.0.0.28开始。 206 207**适配指导** 208 209默认行为变更,无需适配,但应注意变更后的行为是否对整体应用逻辑产生影响。 210 211## cl.arkui.5 TextInput/TextArea组件设置为内联模式时,最小值为16vp 212 213**访问级别** 214 215公开接口 216 217**变更原因** 218 219TextInput/TextArea组件设置为内联模式并且内容为空时,组件消失。 220 221**变更影响** 222 223该变更为兼容性变更。 224 225变更前: 226TextInput/TextArea组件设置为内联模式并且内容为空时,组件消失。 227 228变更后: 229TextInput/TextArea组件设置为内联模式并且内容为空时,组件最小宽度为16vp。 230 231**起始API Level** 232 233不涉及API变更 234 235**变更发生版本** 236 237从OpenHarmony SDK 5.0.0.28开始。 238 239**适配指导** 240 241默认行为变更,无需适配,但应注意变更后的行为是否对整体应用逻辑产生影响。 242 243## cl.arkui.6 TextInput/TextArea组件在2in1设备上通过双击弹出菜单时,点击全选,菜单消失 244 245**访问级别** 246 247公开接口 248 249**变更原因** 250 251TextInput/TextArea组件在2in1上通过双击弹出菜单时,点击全选,此时无需菜单弹出。 252 253**变更影响** 254 255该变更为兼容性变更。 256 257变更前: 258TextInput/TextArea组件在2in1上通过双击弹出菜单时,点击全选,此时菜单弹出。 259 260变更后: 261TextInput/TextArea组件在2in1上通过双击弹出菜单时,点击全选,此时菜单消失。 262 263**起始API Level** 264 265不涉及API变更 266 267**变更发生版本** 268 269从OpenHarmony SDK 5.0.0.28开始。 270 271**适配指导** 272 273默认行为变更,无需适配,但应注意变更后的行为是否对整体应用逻辑产生影响。 274 275## cl.arkui.7 Menu组件默认样式变更 276 277**访问级别** 278 279公开接口 280 281**变更原因** 282 283优化menu组件的视觉体验。 284 285**变更影响** 286 287该变更为非兼容性变更。 288 289**变更前:** 290 291 292 293菜单列表的左右padding默认为0 294 295菜单项文本字重默认为regular 296 297菜单组件圆角大小默认为16vp 298 299对于带标题的菜单列表,标题文本大小默认为16fp 300 301对于带标题的菜单列表,标题文本颜色默认为#89000000 302 303对于带标题的菜单列表,标题文本字重默认为normal 304 305**变更后:** 306 307 308 309菜单列表的左右padding默认为16vp 310 311菜单项文本字重默认为medium 312 313菜单组件圆角大小默认为20vp 314 315对于带标题的菜单列表,标题文本大小默认为18fp 316 317对于带标题的菜单列表,标题文本颜色默认为#FF000000 318 319对于带标题的菜单列表,标题文本字重默认为bold 320 321 322**起始API Level** 323 3249 325 326**变更发生版本** 327 328从OpenHarmony SDK 5.0.0.28开始。 329 330**适配指导** 331 332默认效果变更,无需适配,但应注意变更后的默认效果是否符合开发者预期,如不符合则应自定义修改效果控制变量以达到预期。 333 334## cl.arkui.8 chipGroup不设置items属性的异常处理 335 336**访问级别** 337 338公开接口 339 340**变更原因** 341 342chipGroup组件在使用过程中,对于必填属性items,不设置时DevEco Studio是否抛出异常。 343 344**变更影响** 345 346该变更为非兼容性变更。 347 348变更前:必填属性items,不设置时DevEco Studio不报错。 349 350变更后:必填属性items,不设置时DevEco Studio抛出异常告警。 351 352**起始API Level** 353 35412 355 356**变更发生版本** 357 358从OpenHarmony SDK 5.0.0.28开始。 359 360**适配指导** 361 362使用chipGroup组件时,如果不设置必填属性items,则需按日志提示信息进行修改。 363 364## cl.arkui.9 ListItem横滑跟手比变更 365 366**访问级别** 367 368公开接口 369 370**变更原因** 371 372ListItem横滑动态跟手比计算公式,需要与其他场景(例如:List拖动过界)的公式一致。 373 374**变更影响** 375 376该变更为不兼容变更。 377 378ListItem横滑动态跟手比按新实现后,手指滑动相同距离,组件滑动距离会变大。 379 380**起始API Level** 381 3829 383 384**变更发生版本** 385 386从OpenHarmony SDK 5.0.0.28开始。 387 388**适配指导** 389 390默认效果变更,无需适配。 391 392## cl.arkui.10 DrawableDescriptor显示效果 393 394**访问级别** 395 396公开接口 397 398**变更原因** 399 400对原来非标准288x288图标的裁切行为做统一变更,提高用户体验。 401 402**变更影响** 403 404该变更为不兼容性变更。 405 406对于非288x288尺寸前景图片,当前生成的分层图标按照缩放后裁剪显示,288x288尺寸前景图片保持原规格。 407 408**起始API Level** 409 41010 411 412**变更发生版本** 413 414从OpenHarmony SDK 5.0.0.28开始。 415 416**适配指导** 417 418默认效果变更:默认效果变更,无需适配,但应注意变更后的默认效果是否符合开发者预期,如不符合则应自定义修改效果控制变量以达到预期。 419 420## cl.arkui.11 TipsDialog的imageRes/imageSize/title变更 421 422**访问级别** 423 424公开接口 425 426**变更原因** 427 428TipsDialog 原来只支持 resource 类型的图片,现扩展 TipsDialog 支持 pixelMap 和 string 类型的图片,方便用户根据使用场景选用图片类型,提升用户使用体验。同时变更 TipsDialog 图片大小和中间标题由必填改为非必填,方便用户根据使用场景决定是否选用默认样式。 429 430**变更影响** 431 432该变更为不兼容变更。 433 434变更前: 4351. TipsDialog不支持pixelMap和string类型的图片 4362. TipsDialog的图片大小为必填 4373. TipsDialog必须有中间标题 438 439变更后: 4401. TipsDialog支持pixelMap和string类型的图片 4412. TipsDialog图片大小非必填,默认大小64vp*64vp 4423. TipsDialog中间标题可为非必填,未填不展示标题 443 444**起始API Level** 445 446API 12 447 448**变更发生版本** 449 450从OpenHarmony SDK 5.0.0.28开始。 451 452**适配指导** 453 454TipsDialg组件创建函数变更:无需适配,但应注意变更后的属性范围扩展是否符合开发者预期,如不符合可具体参考: 455```ts 456import { TipsDialog } from '@kit.ArkUI'; 457 458@Entry 459@Component 460struct Index { 461 isChecked = false; 462 dialogControllerImage: CustomDialogController = new CustomDialogController({ 463 builder: TipsDialog({ 464 imageRes: $r('sys.media.ohos_ic_public_voice'), 465 content: '想要卸载这个APP嘛?', 466 primaryButton: { 467 value: '取消', 468 action: () => { 469 console.info('Callback when the first button is clicked') 470 }, 471 }, 472 secondaryButton: { 473 value: '删除', 474 role: ButtonRole.ERROR, 475 action: () => { 476 console.info('Callback when the second button is clicked') 477 } 478 }, 479 onCheckedChange: () => { 480 console.info('Callback when the checkbox is clicked') 481 } 482 }), 483 }) 484 485 build() { 486 Row() { 487 Stack() { 488 Column(){ 489 Button("上图下文弹出框") 490 .width(96) 491 .height(40) 492 .onClick(() => { 493 this.dialogControllerImage.open() 494 }) 495 }.margin({bottom: 300}) 496 }.align(Alignment.Bottom) 497 .width('100%').height('100%') 498 } 499 .backgroundImageSize({ width: '100%', height: '100%' }) 500 .height('100%') 501 } 502} 503``` 504 505## cl.arkui.12 ChipGroup组件items拓展参数类型支持SymbolGlyphModifier 506 507**访问级别** 508 509公开接口 510 511**变更原因** 512 513ChipGroup组件设置IconGroupSuffix的items参数原来只支持image类型的图片,现扩展支持HM Symbol资源设置,方便用户使用资源更加丰富的Symbol库,提升用户使用体验。 514 515**变更影响** 516 517该变更为不兼容变更。 518 519变更前: 520IconGroupSuffix的参数items类型是Array\<IconItemOptions>,支持用户传参image类型的图标。 521 522变更后: 523IconGroupSuffix的参数items类型是Array\<IconItemOptions | SymbolGlyphModifier>,支持用户传参image类型或者symbol类型的图标。 524 525**起始API Level** 526 527API 12 528 529**变更发生版本** 530 531从OpenHarmony SDK 5.0.0.28开始。 532 533**变更的接口/组件** 534 535[@ohos.arkui.advanced.ChipGroup.d.ets](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.arkui.advanced.ChipGroup.d.ets)中如下接口: 536 537items: Array<IconItemOptions | SymbolGlyphModifier>; 538 539**适配指导** 540 541ChipGroup创建IconGroupSuffx变更:无需适配,开发者可以根据需要设置image或者symbol图标,如要使用symbol图标,可以参考以下示例: 542```ts 543import { ChipSize, ChipGroup, IconGroupSuffix, SymbolGlyphModifier } from '@kit.ArkUI' 544 545@Entry 546@Preview 547@Component 548struct Index { 549 @State selected_index: Array<number> = [0, 1, 2, 3, 4, 5, 6]; 550 @State selected_state: boolean = true; 551 @State prefixModifierNormal: SymbolGlyphModifier = new SymbolGlyphModifier($r('sys.symbol.ohos_star')); 552 @State prefixModifierActivated: SymbolGlyphModifier = new SymbolGlyphModifier($r('sys.symbol.ohos_star')).fontColor([Color.Red]); 553 @State suffixModifierNormal: SymbolGlyphModifier = new SymbolGlyphModifier($r('sys.symbol.ohos_wifi')); 554 @State suffixModifierActivated: SymbolGlyphModifier = new SymbolGlyphModifier($r('sys.symbol.ohos_wifi')).fontColor([Color.Red]); 555 556 @LocalBuilder 557 ChipGroupSuffix(): void { 558 IconGroupSuffix({ 559 items: [ 560 new SymbolGlyphModifier($r('sys.symbol.magnifyingglass')) 561 .onClick(() => { 562 if (this.selected_state == false) { 563 this.selected_index = [0, 1, 2, 3, 4, 5, 6]; 564 this.selected_state = true; 565 } else { 566 this.selected_index = []; 567 this.selected_state = false; 568 } 569 }) 570 ] 571 }) 572 } 573 574 build() { 575 Column() { 576 ChipGroup({ 577 items: [ 578 { 579 prefixSymbol: { normal: this.prefixModifierNormal, activated: this.prefixModifierActivated }, 580 label: { text: "操作块1" }, 581 suffixSymbol: { normal: this.suffixModifierNormal, activated: this.suffixModifierActivated }, 582 allowClose: false, 583 }, 584 { 585 prefixSymbol: { normal: this.prefixModifierNormal, activated: this.prefixModifierActivated }, 586 label: { text: "操作块2" }, 587 allowClose: true, 588 }, 589 { 590 prefixIcon: { src: $r('sys.media.ohos_ic_public_clock') }, 591 label: { text: "操作块3" }, 592 allowClose: true, 593 }, 594 { 595 prefixIcon: { src: $r('sys.media.ohos_ic_public_cast_stream') }, 596 label: { text: "操作块4" }, 597 allowClose: true, 598 }, 599 { 600 prefixIcon: { src: $r('sys.media.ohos_ic_public_cast_mirror') }, 601 label: { text: "操作块5" }, 602 allowClose: true, 603 }, 604 { 605 prefixIcon: { src: $r('sys.media.ohos_ic_public_cast_stream') }, 606 label: { text: "操作块6" }, 607 allowClose: true, 608 }, 609 ], 610 itemStyle: { 611 size: ChipSize.NORMAL, 612 backgroundColor: $r('sys.color.ohos_id_color_button_normal'), 613 fontColor: $r('sys.color.ohos_id_color_text_primary'), 614 selectedBackgroundColor: $r('sys.color.ohos_id_color_emphasize'), 615 selectedFontColor: $r('sys.color.ohos_id_color_text_primary_contrary'), 616 }, 617 selectedIndexes: this.selected_index, 618 multiple: true, 619 chipGroupSpace: { itemSpace: 8, endSpace: 0 }, 620 chipGroupPadding: { top: 10, bottom: 10 }, 621 onChange: (activatedChipsIndex: Array<number>) => { 622 console.log('chips on clicked, activated index ' + activatedChipsIndex) 623 }, 624 suffix: this.ChipGroupSuffix 625 }) 626 } 627 } 628} 629```