1# ArkUI子系统Changelog 2 3## cl.arkui.1 Progress组件动态改变宽高时,内容区宽高变更 4 5**访问级别** 6 7公开接口 8 9**变更原因** 10 11容器宽高改变,Progress组件内容区未能实时触发刷新,需要更新别的属性后宽高才会改变。 12 13**变更影响** 14 15此变更无需应用适配。 16 17| 变更前 | 变更后 | 18| ------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | 19| 当容器的宽度或高度发生变化时,Progress组件的内容区域未能实时更新。需要更改其他属性后,其尺寸才会相应调整。<br> | 当容器的宽高发生变化时,Progress组件的内容区域宽高也会随之相应调整。<br> | 20 21**起始API Level** 22 239 24 25**变更发生版本** 26 27从OpenHarmony 5.1.0.53 版本开始。 28 29**变更的接口/组件** 30 31Progress。 32 33**适配指导** 34 35展示效果变更,无需适配,但应注意变更后的效果是否符合开发者预期。 36 37## cl.arkui.2 无障碍绿框绘制区域和聚焦区域修改为组件触摸热区 38 39**访问级别** 40 41公开接口 42 43**变更原因** 44 45无论是否开启无障碍,触碰操作控件的范围都应保持一致,无需为无障碍单独定义操控范围。 46 47**变更影响** 48 49此变更不涉及应用适配。 50 51- 变更前:无障碍绿框绘制区域、聚焦区域为组件区域。 52 53- 变更后:无障碍绿框绘制区域、聚焦区域为组件触摸热区。 54 55**起始API Level** 56 5716 58 59**变更发生版本** 60 61从OpenHarmony SDK 5.1.0.53开始。 62 63**变更的接口/组件** 64 65arkui无障碍 66 67**适配指导** 68 69此处无需应用适配,热区显示大小的调整,无论是否配置热区,均为内部逻辑调整绿框显示位置或大小。 70 71## cl.arkui.3 拖拽缩放比例UX规则变更 72 73**访问级别** 74 75公开接口 76 77**变更原因** 78 79UX规范变更。 80 81**变更影响** 82 83此变更不涉及应用适配。 84 85变更前:通过设备栅格数来设置跟手图的大小。 86 87 | 设备大小 | 跟手图大小 | 88 | :------- | :--------- | 89 | 4栅格 | 2栅格 | 90 | 8栅格 | 3栅格 | 91 | 12栅格 | 4栅格 | 92 93变更后:根据不同类型设备的最短边来设置缩放规则。 94 95| 拖拽对象 | 判断规则 | 缩放规则 | 96| :--------------- | :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------- | 97| 图文选择跟随文本 | 设备最短边小于600vp。 | 跟手图最大高度不超过屏幕短边长度的1/2且最大宽度不超过屏幕短边长度,跟手图在超出限制时需按比例缩小,同时满足高度和宽度的限制条件。 | 98| 图文选择跟随文本 | 设备最短边大于600vp,小于840vp。 | 跟手图最大高度不超过屏幕短边长度的1/4且最大宽度不超过屏幕短边长度的1/2,跟手图在超出限制时需按比例缩小,同时满足高度和宽度的限制条件。 | 99| 图文选择跟随文本 | 设备最短边大于840vp,小于1440vp。 | 跟手图最大高度不超过屏幕短边长度的1/3且最大宽度不超过屏幕短边长度的2/3,跟手图在超出限制时需按比例缩小,同时满足高度和宽度的限制条件。 | 100| 图文选择跟随文本 | 设备最短边大于1440vp。 | 跟手图最大高度不超过屏幕短边长度的1/3且最大宽度不超过屏幕短边长度的2/3,跟手图在超出限制时需按比例缩小,同时满足高度和宽度的限制条件。 | 101| 图片拖拽缩放 | 设备最短边小于600vp。 | 跟手图最大高度不超过屏幕短边长度的1/2且最大宽度不超过屏幕短边长度的1/2,跟手图在超出限制时需按比例缩小,同时满足高度和宽度的限制条件。 | 102| 图片拖拽缩放 | 设备最短边大于600vp,小于840vp。 | 跟手图最大高度不超过屏幕短边长度的1/4且最大宽度不超过屏幕短边长度的1/4,跟手图在超出限制时需按比例缩小,同时满足高度和宽度的限制条件。 | 103| 图片拖拽缩放 | 设备最短边大于840vp,小于1440vp。 | 跟手图最大高度不超过屏幕短边长度的1/3且最大宽度不超过屏幕短边长度的1/3,跟手图在超出限制时需按比例缩小,同时满足高度和宽度的限制条件。 | 104| 图片拖拽缩放 | 设备最短边大于1440vp。 | 跟手图最大高度不超过屏幕短边长度的1/3且最大宽度不超过屏幕短边长度的1/3,跟手图在超出限制时需按比例缩小,同时满足高度和宽度的限制条件。 | 105 106**起始API Level** 107 10813 109 110**变更发生版本** 111 112从OpenHarmony SDK 5.1.0.53开始。 113 114**变更的接口/组件** 115 116UX规格变更,不涉及接口和组件。 117 118**适配指导** 119 120默认行为变更,无需适配。 121 122## cl.arkui.4 在使用手写笔操作时,应用从onTouch回调中获取到的TouchEvent,其中touches数组内的TouchObject的id值发生变更。 123 124**访问级别** 125 126公开接口 127 128**变更原因** 129 130在手写笔场景下,TouchEvent中changedTouches数组内的TouchObject的id,与touches数组内的TouchObject的id不一致。 131 132**变更影响** 133 134此变更不涉及应用适配。 135 136- 变更前:在使用手写笔操作时,应用在onTouch回调中获取到的TouchEvent中,touches数组中TouchObject的id和changedTouches中的TouchObject的id不一致。 137 138- 变更后:在使用手写笔操作时,应用在onTouch回调中获取到的TouchEvent中,touches数组中TouchObject的id和changedTouches中的TouchObject的id保持一致。 139 140**起始API Level** 141 1427 143 144**变更发生版本** 145 146从OpenHarmony SDK 5.1.0.53开始。 147 148**变更的接口/组件** 149 150| 文件 | 接口 | 151| ------------------ | ------------------------------------------ | 152| common.d.ts | onTouch回调中的TouchEvent | 153| common.d.ts | onTouchIntercept回调中的TouchEvent | 154 155**适配指导** 156 157默认行为变更,应用无需适配。 158 159## cl.arkui.5 tablet和2in1设备的onPageHide和onHidden生命周期函数变更 160 161**访问级别** 162 163公开接口 164 165**变更原因** 166 167优化tablet和2in1设备的onPageHide和onHidden生命周期函数,确保函数内部修改状态变量时能够触发页面刷新,也能够触发状态变量的监听函数。 168 169**变更影响** 170 171此变更涉及应用适配。 172 173- 变更前: 174 1. 在onPageHide/onHidden中修改状态变量可能不会触发对应的监听函数,示例如下: 175 ```ts 176 @Component 177 struct TestComponent { 178 @Prop @Watch('onPageVisibilityChange') isPageShow: boolean; 179 onPageVisibilityChange(): void { 180 // 期望状态变量的修改会触发当前函数,实际不一定会触发。 181 console.log(`onPageVisibilityChange ${this.isPageShow}`) 182 } 183 build() { 184 Text('test') 185 } 186 } 187 @Component 188 struct DestA { 189 @State isPageShow: boolean = false; 190 build() { 191 NavDestination() { 192 Stack() { 193 TestComponent({isPageShow: this.isPageShow}) 194 } 195 }.onShown(() => { 196 this.isPageShow = true; 197 }) 198 .onHidden(() => { 199 // 退后台时会触发该生命周期,进一步改变状态变量 200 this.isPageShow = false; 201 }) 202 } 203 } 204 @Entry 205 @Component 206 struct TestPage { 207 private stack: NavPathStack = new NavPathStack(); 208 aboutToAppear(): void { 209 this.stack.pushPath({name: 'page'}) 210 } 211 @Builder 212 MyPageMap(name: string) { 213 DestA() 214 } 215 build() { 216 Navigation(this.stack) { 217 }.hideNavBar(true) 218 .navDestination(this.MyPageMap) 219 } 220 } 221 ``` 222 2. 在onPageHide/onHidden中修改状态变量可能不会刷新页面,示例如下: 223 ```ts 224 @Component 225 struct TestComponent { 226 build() { 227 Text('test1') 228 } 229 aboutToDisappear(): void { 230 console.log(`TestComponent aboutToDisappear`) 231 } 232 } 233 @Entry 234 @Component 235 struct TestPage { 236 @State isPageShow: boolean = true; 237 build() { 238 // 期望状态变量的修改会导致TestComponent会被销毁,实际不一定会被销毁。 239 if (this.isPageShow) { 240 TestComponent() 241 } else { 242 Text('test2') 243 } 244 } 245 onPageShow(): void { 246 this.isPageShow = true; 247 } 248 onPageHide(): void { 249 // 退后台时会触发该生命周期,进一步改变状态变量 250 this.isPageShow = false; 251 } 252 } 253 ``` 254 255- 变更后: 256 1. 在onPageHide/onHidden中修改状态变量能够触发对应的监听函数; 257 2. 在onPageHide/onHidden中修改状态变量能够刷新页面。 258 259**起始API Level** 260 261onPageHide:API version 7,onHidden:API version 10 262 263**变更发生版本** 264 265从OpenHarmony SDK 5.1.0.53开始。 266 267**变更发生的接口/组件** 268 269[onPageHide](../../../application-dev/reference/apis-arkui/arkui-ts/ts-custom-component-lifecycle.md#onpagehide),所在文件:api/@internal/component/ets/common.d.ts;[onHidden](../../../application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-navdestination.md#onhidden10),所在文件:api/@internal/component/ets/nav_destination.d.ts。 270 271**适配指导** 272 273仅**tablet**和**2ni1**设备需要做以下适配: 274检查是否在onPageHide/onHidden生命周期函数中修改状态变量,本次变更之后能够保证触发页面刷新,触发监听函数。 275 276## cl.arkui.7 TEXTURE模式XComponent的本地窗口缓冲区支持设置旋转变换 277 278**访问级别** 279 280公开接口 281 282**变更原因** 283 284TEXTURE模式XComponent的本地窗口缓冲区旋转变换在设置后不生效,导致开发者无法通过设置缓冲区旋转变换来调整显示画面的旋转方向。 285 286**变更影响** 287 288此变更涉及应用适配。 289 290变更前: 291设置TEXTURE模式XComponent的本地窗口缓冲区旋转变换后,旋转变换在实际显示的画面中不生效。 292 293变更后: 294设置TEXTURE模式XComponent的本地窗口缓冲区旋转变换后,旋转变换在实际显示的画面中生效。 295 296| 写入缓冲区的原始图像 | 变更前设置了缓冲区逆时针旋转90度后的实际显示画面 | 变更后设置了缓冲区逆时针旋转90度后的实际显示画面 | 297| --------- | --------- | --------- | 298|| | | 299 300**起始API Level** 301 302API 10 303 304**变更发生版本** 305 306从OpenHarmony SDK 5.1.0.53开始。 307 308**变更的接口/组件** 309 310ArkUI 内置组件XComponent。 311 312**适配指导** 313 314变更后,设置TEXTURE模式XComponent的本地窗口缓冲区旋转变换后,XComponent显示的内容将根据设置进行旋转。 315如开发者原先设置过TEXTURE模式XComponent的本地窗口缓冲区旋转变换,为避免显示内容旋转, 316应将原先设置本地窗口缓冲区旋转变换的相关调用语句去除。 317``` 318OHNativeWindow* window; 319// 利用XComponent的surfaceId获取本地窗口 320OH_NativeWindow_CreateNativeWindowFromSurfaceId(surfaceId, &window); 321 322// ...... 323 324// 应去除此处设置本地窗口缓冲区逆时针旋转90度的调用 325OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_TRANSFORM, NATIVEBUFFER_ROTATE_90); 326 327// ...... 328``` 329 330## cl.arkui.8 按钮默认值变更为新增圆角矩形类型 331 332**访问级别** 333 334公开接口 335 336**变更原因** 337 338原有默认类型按钮是胶囊按钮,在适老化场景下字体过大,在多行等场景下胶囊按钮文字易超出其圆角范围。不符合简单易用及高端精致原则,因此新增圆角矩形类型按钮,默认值变为新增的圆角矩形类型。 339 340**变更影响** 341 342此变更不涉及应用适配。 343 344变更前:ButtonOptions中type的默认值为ButtonType.Capsule。 345 346变更后:ButtonOptions中type的默认值为ButtonType.ROUNDED_RECTANGLE 347 348 349 350**起始API Level** 351 352API 9 353 354**变更发生版本** 355 356从OpenHarmony SDK 5.1.0.53开始。 357 358**变更的接口/组件** 359 360Button组件中ButtonOptions对象的type属性默认值。 361 362**适配指导** 363 364开发者在使用Button组件,创建默认类型的Button按钮时,Button按钮为ROUNDED_RECTANGLE类型。 365 366```ts 367 368@Entry 369@Component 370struct ButtonExample { 371 build() { 372 Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start, justifyContent: FlexAlign.SpaceBetween }) { 373 Text('Capsule button with rounded corners by default.').fontSize(9).fontColor(0xCCCCCC) 374 Flex({ alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) { 375 Button('Capsule') 376 .type(ButtonType.Capsule) 377 .backgroundColor(0x317aff) 378 .height(60) 379 .controlSize(ControlSize.NORMAL) 380 .width(180) 381 } 382 Text('Rounded rectangle button with rounded corners by default.').fontSize(9).fontColor(0xCCCCCC) 383 Flex({ alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) { 384 Button('Rounded rectangle') 385 .type(ButtonType.ROUNDED_RECTANGLE) 386 .backgroundColor(0x317aff) 387 .controlSize(ControlSize.NORMAL) 388 .height(60) 389 .width(180) 390 } 391 }.height(400).padding({ left: 35, right: 35, top: 35 }) 392 } 393} 394 395``` 396 397## cl.arkui.9 修复Popup高级组件宽度限制计算错误的问题 398 399**访问级别** 400 401公开接口 402 403**变更原因** 404 405目前宽度最大限制不符合ux规范,在手机屏幕场景下,会出现Popup高级组件无法撑满屏幕的情况,影响体验。 406 407**变更影响** 408 409此变更不涉及应用适配。 410 411变更前:屏幕宽度小于400vp时,Popup高级组件最大宽度为当前屏幕宽度-80vp。 412 413变更后:屏幕宽度小于400vp时,Popup高级组件最大宽度为当前屏幕宽度。 414 415| 变更前 | 变更后 | 416| ---------------------------------------- | ---------------------------------------- | 417|  |  | 418 419**起始API Level** 420 42111 422 423**变更发生版本** 424 425从OpenHarmony 5.1.0.53 版本开始。 426 427**变更的接口/组件** 428 429Popup高级组件。 430 431**适配指导** 432 433如果用户原来没有自定义Popup高级组件的宽度,且内容宽度大于320vp,变更前按320vp显示,变更后,Popup高级组件会变宽;如不符合预期,可以手动修改为想要的宽度。 434