1# ArkUI子系统Changelog 2 3## cl.arkui.1 文本与输入、信息展示、按钮与选择、滚动与滑动、图形绘制组件接口支持Resource类型 4 5**访问级别** 6 7公开接口 8 9**变更原因** 10 11基础能力增强,文本与输入、信息展示、按钮与选择、滚动与滑动、图形绘制组件的接口支持Resource类型,可以使用资源对象设置默认选项的值。 12 13**变更影响** 14 15此变更涉及应用适配。 16 17- 变更前:TextPickerOptions、Progress、QRCode、TextClock、TextTimer、Badge、Circle、Text、TextArea、TextInput、Search、Span、RichEditor、Rating、Rect、Ellipse、Line、Polyline、Path、Polygon、ProgressButton、SubHeader、SubHeaderV2、Shape、SwipeRefresher中部分接口不支持Resource类型。 18 19- 变更后:TextPickerOptions、Progress、QRCode、TextClock、TextTimer、Badge、Circle、Text、TextArea、TextInput、Search、Span、RichEditor、Rating、Rect、Ellipse、Line、Polyline、Path、Polygon、ProgressButton、SubHeader、SubHeaderV2、Shape、SwipeRefresher中部分接口支持Resource类型。 20 21 22**起始API Level** 23 2411 25 26**变更发生版本** 27 28从OpenHarmony SDK 6.0.0.32开始。 29 30**变更的接口/组件** 31 32|组件名称|接口名称|参数名称| 33|--|--|--| 34|TextPicker|TextPickerOptions|value| 35|Progress|CapsuleStyleOptions|content| 36|TextPicker|TextPickerOptions|value| 37|QRCode|QRCodeInterface|value| 38|TextClock|format|value| 39|TextTimer|fontWeight|value| 40|Badge|BadgeStyle|fontSize、badgeSize、fontWeight| 41|Badge|BadgeParamWithString|value| 42|Circle|CircleOptions|width、height| 43|Text|fontWeight|value、weight| 44|Text|letterSpacing|value| 45|Text|baselineOffset|value| 46|TextArea|fontWeight|value| 47|TextInput|fontWeight|value| 48|Search|SearchOptions|value| 49|Search|searchButton|value| 50|Span|fontWeight|value| 51|Span|letterSpacing|value| 52|RichEditor|RichEditorController.addTextSpan|content| 53|Rating|StarStyleOptions|backgroundUri、foregroundUri、secondaryUri| 54|Rect|RectOptions|width、height、radius| 55|Rect|RoundedRectOptions|width、height、radiusWidth、radiusHeight| 56|Rect|radiusWidth|value| 57|Rect|radiusHeight|value| 58|Rect|radius|value| 59|Ellipse|EllipseOptions|width、height| 60|Line|LineOptions|width、height| 61|Polyline|PolylineOptions|width、height| 62|Path|PathOptions|width、height、commands| 63|Path|commands|value| 64|Polygon|PolygonOptions|width、height| 65|ProgressButton|-|content| 66|SubHeader|SelectOptions|value| 67|SubHeaderV2|SubHeaderV2SelectOptions|selectedContent| 68|SubHeaderV2|SubHeaderV2Select|selectedContent| 69|Shape|ViewportRect|x、y、width、height| 70|Shape|strokeDashOffset|value| 71|Shape|strokeMiterLimit|value| 72|Shape|strokeWidth|value| 73|SwipeRefresher|-|content| 74 75**适配指导** 76 77若有继承派生或者读取赋值则需要在定义处增加Resource类型支持,否则无需适配。 78 79```ts 80@Entry 81@Component 82struct Index { 83 searchOptions: SearchOptions = { value: '123456'} 84 // @State text: string = this.searchOptions.value; //原定义 85 @State text: ResourceStr | undefined = this.searchOptions.value; //适配定义 86 build() { 87 Column() { 88 Scroll() { 89 Column({ space: 20 }) { 90 Search(this.searchOptions) 91 Text(this.text) 92 }.alignItems(HorizontalAlign.Center).width('100%').margin({ top: 20 }) 93 } 94 } 95 } 96} 97``` 98 99## cl.arkui.2 width和height支持的matchParent接口规格变更 100 101**访问级别** 102 103公开接口 104 105**变更原因** 106 107接口能力增强,使能Row和Column在设置matchParent时仅适应父组件内容区大小并且调整constraintSize和matchParent的优先级。 108 109**变更影响** 110 111此变更不涉及应用适配。 112 113变更前:Row和Column的子组件matchParent时,会将其大小设置为父组件包含padding、border以及safeAreaPadding后的大小并且不受自身constraintSize的约束。 114 115变更后:Row和Column的子组件matchParent时,会将其大小设置为父组件不包含padding、border以及safeAreaPadding后的大小,即与父组件内容区大小保持一致并且会受到自身constraintSize的约束。 116 117例如:运行以下示例,进入页面后,观察Row组件matchParent的最终结果为父组件内容区大小。 118 119```ts 120@Entry 121@Component 122struct Demo { 123 build() { 124 Column() { 125 Row().width(LayoutPolicy.matchParent).height(LayoutPolicy.matchParent).backgroundColor('rgb(0, 74, 175)') 126 }.width(200).height(200).padding(20).backgroundColor('rgb(39, 135, 217)') 127 } 128} 129``` 130 131变更前后效果如下: 132 133|变更前|变更后| 134|--|--| 135||| 136 137再例如:运行以下示例,进入页面后,观察Row组件的子组件matchParent的最终结果会受自身constraintSize约束。 138 139```ts 140@Entry 141@Component 142struct Demo { 143 build() { 144 Column({ space: 100 }) { 145 Row() { 146 Stack() 147 .width(LayoutPolicy.matchParent) 148 .height(LayoutPolicy.matchParent) 149 .constraintSize({ maxWidth: 50, maxHeight: 50 }) 150 .backgroundColor('rgb(0, 74, 175)') 151 }.width(200).height(200).backgroundColor('rgb(39, 135, 217)') 152 153 Row() { 154 Stack() 155 .width(LayoutPolicy.matchParent) 156 .height(LayoutPolicy.matchParent) 157 .constraintSize({ minWidth: 100, minHeight: 100 }) 158 .backgroundColor('rgb(0, 74, 175)') 159 }.width(50).height(50).backgroundColor('rgb(39, 135, 217)') 160 }.width('100%').height('100%') 161 } 162} 163``` 164 165变更前后效果如下: 166 167|变更前|变更后| 168|--|--| 169||| 170 171**起始API Level** 172 17315 174 175**变更发生版本** 176 177从OpenHarmony SDK 6.0.0.32开始。 178 179**变更的接口/组件** 180 181width(widthValue: Length | LayoutPolicy): T 182 183height(heightValue: Length | LayoutPolicy): T 184 185**适配指导** 186 187默认行为变更,无需适配。 188 189## cl.arkui.3 GridRow组件columns参数和GridCol组件span参数默认值变更 190 191**访问级别** 192 193公开接口 194 195**变更原因** 196 197栅格组件默认值原规格容易引发页面压缩问题,变更后提升组件易用性。 198 199**变更影响** 200 201该变更不涉及应用适配。 202 203| 变更前 | 变更后 | 204| :---------------------------------: | :-------------------------------: | 205|GridRow中columns不配置时,默认值为12。 |GridRow中columns不配置时,columns使用默认值:{ xs: 2, sm: 4, md: 8, lg: 12, xl: 12, xxl: 12 }| 206|GridRow中columns配置部分断点时,取已配置的更小断点的columns列数补全未配置的列数。若未配置更小断点的columns列数,取默认值12。 </br> `columns: {xs:2, md:4, lg:8} 等于配置 columns: {xs:2, sm:2, md:4, lg:8, xl:8, xxl:8}` </br> `columns: {md:4, lg:8} 等于配置 columns: {xs:12, sm:12, md:4, lg:8, xl:8, xxl:8}`|GridRow中columns配置部分断点时,取已配置的更小断点的columns列数补全未配置的列数。若未配置更小断点的columns列数,取已配置的更大断点的columns列数补全未配置的列数。</br>`columns: {xs:2, md:4, lg:8} 等于配置 columns: {xs:2, sm:2, md:4, lg:8, xl:8, xxl:8}` </br> `columns: {md:4, lg:8} 等于配置 columns: {xs:4, sm:4, md:4, lg:8, xl:8, xxl:8}`| 207|GridCol中span配置部分断点时,取已配置的更小断点的span列数补全未配置的列数。若未配置更小断点的span列数,取默认值1。</br> `span: {xs:2, md:4, lg:8} 等于配置 span: {xs:2, sm:2, md:4, lg:8, xl:8, xxl:8}` </br> `span: {md:4, lg:8} 等于配置 span: {xs:1, sm:1, md:4, lg:8, xl:8, xxl:8}`|GridCol中span配置部分断点时,取已配置的更小断点的span列数补全未配置的列数。若未配置更小断点的span列数,取已配置的更大断点的span列数补全未配置的列数。</br> `span: {xs:2, md:4, lg:8} 等于配置 span: {xs:2, sm:2, md:4, lg:8, xl:8, xxl:8}` </br> `span: {md:4, lg:8} 等于配置 span: {xs:4, sm:4, md:4, lg:8, xl:8, xxl:8}`| 208 209**起始API Level** 210 2119 212 213**变更发生版本** 214 215从OpenHarmony SDK 6.0.0.32开始。 216 217**变更的接口/组件** 218 219GridRow组件、GridCol组件。 220 221**适配指导** 222 223默认行为变更,无需适配,但应注意变更后的默认效果是否符合开发者预期,可手动配置所有不同宽度设备下GridRow组件的栅格列数和GridCol组件所占列数,避免使用默认值或默认补全的布局效果不符合预期。 224 225```ts 226@Entry 227@Component 228struct Example { 229 @State bgColors: ResourceColor[] = 230 ['rgb(213,213,213)', 'rgb(150,150,150)', 'rgb(0,74,175)', 'rgb(39,135,217)', 'rgb(61,157,180)', 'rgb(23,169,141)', 231 'rgb(255,192,0)', 'rgb(170,10,33)']; 232 @State currentBp: string = "unknown" 233 234 build() { 235 Column() { 236 Column() { 237 Text(this.currentBp) 238 GridRow({ 239 columns: { 240 xs: 2, // 窗口宽度落入xs断点上,栅格栅格容器每一行分为2列。 241 sm: 4, // 窗口宽度落入sm断点上,栅格栅格容器每一行分为4列。 242 md: 8, // 窗口宽度落入md断点上,栅格栅格容器每一行分为8列。 243 lg: 12, // 窗口宽度落入lg断点上,栅格栅格容器每一行分为12列。 244 xl: 12, // 窗口宽度落入xl断点上,栅格栅格容器每一行分为12列。 245 xxl: 12 // 窗口宽度落入xxl断点上,栅格栅格容器每一行分为12列。 246 }, 247 breakpoints: { 248 value: ['320vp', '600vp', '840vp', '1440vp', '1600vp'], 249 reference: BreakpointsReference.WindowSize 250 } 251 }) { 252 ForEach(this.bgColors, (color: ResourceColor, index?: number | undefined) => { 253 GridCol({ 254 span: { 255 xs: 1, // 窗口宽度落入xs断点上,栅格子容器宽度占1列。 256 sm: 2, // 窗口宽度落入sm断点上,栅格子容器宽度占2列。 257 md: 4, // 窗口宽度落入md断点上,栅格子容器宽度占4列。 258 lg: 6, // 窗口宽度落入lg断点上,栅格子容器宽度占6列。 259 xl: 6, // 窗口宽度落入xl断点上,栅格子容器宽度占6列。 260 xxl: 6 // 窗口宽度落入xxl断点上,栅格子容器宽度占6列。 261 } 262 }) { 263 Row() { 264 Text(`${index}`) 265 }.width("100%").height('50vp') 266 }.backgroundColor(color) 267 }) 268 } 269 .onBreakpointChange((breakpoint) => { 270 this.currentBp = breakpoint 271 }) 272 }.width('90%') 273 }.width('100%') 274 } 275} 276``` 277## cl.arkui.2 UI Input相关NDK接口行为变更 278 279**访问级别** 280 281公开接口 282 283**变更原因** 284 285修复相关接口在如下场景下的返回值异常问题,以确保开发者能够获取正确的结果: 286 287- 鼠标滚轮或触控板双指滑动; 288- 通过Enter键触发点击或单指轻触手势; 289- 使用外设键盘等设备与焦点窗口交互; 290- 组件节点接收按键事件; 291- 为XComponent组件注册自定义事件拦截回调后进行触摸测试; 292- 绑定组件接收轴事件; 293- 为XComponent组件注册UI输入事件回调后接收UI输入事件。 294 295**变更影响** 296 297此变更为非兼容性变更。 298 299变更前与变更后的变化说明: 300| 接口名称 | 起始版本 | 说明 | 变更原因 | 变更影响 | 301| ------------------------------------------------------------- | -------- | -------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------------ | 302| int32_t<br> OH_ArkUI_UIInputEvent_GetType(const ArkUI_UIInputEvent* event); | 12 | 获取该裸事件对应的枚举类型ArkUI_UIInputEvent_Type,变更前包括触控、轴、鼠标这几种裸事件 | 遗漏支持key事件类型 | 当传入的参数为key事件时,获取的类型为0,修复后可获取正确值(ARKUI_UIINPUTEVENT_TYPE_KEY)。 | 303| int32_t<br> OH_ArkUI_UIInputEvent_GetAction(const ArkUI_UIInputEvent* event); | 12 | 获取裸事件对应的事件action类型,例如,如果裸事件为触控事件,则获取到的事件action类型为DOWN、MOVE、UP、CANCEL之一;若裸事件类型为鼠标事件,则为PRESS、RELEASE、MOVE、CANCEL之一;若为轴事件,则为BEGIN、UPDATE、END、CANCEL之一。因此,action类型的定义和含义存在差异,但在接口设计上,将返回值统一为int类型,以消除这些差异。 | 遗漏支持axis事件类型 | 当传入的参数为axis事件时,获取的类型为0,修复后可获取正确值(BEGIN/UPDATE/END/CANCEL)。 | 304| int32_t<br> OH_ArkUI_UIInputEvent_GetDeviceId(const ArkUI_UIInputEvent* event); | 14 | 获取当前输入事件的触发设备ID | 实现遗漏通过键盘Enter键触发的click事件场景。 | 1. 仅TAB键走焦场景有可能触发该场景;<br>2.变更前应用无法获取正确的当前输入事件的触发设备ID,修复后可获取正确的当前输入事件的触发设备ID。 | 305 306**起始API Level** 307 308API 12 309 310**变更发生版本** 311 312从OpenHarmony 6.0.0.32版本开始。 313 314**变更的接口/组件** 315 316int32_t OH_ArkUI_UIInputEvent_GetType(const ArkUI_UIInputEvent* event);<br> 317int32_t OH_ArkUI_UIInputEvent_GetAction(const ArkUI_UIInputEvent* event);<br> 318int32_t OH_ArkUI_UIInputEvent_GetDeviceId(const ArkUI_UIInputEvent* event);<br> 319 320**适配指导** 321 322变更前的接口遗漏对部分事件的支持,导致输入这些事件时会返回默认值,与预期不符;修复后的接口已支持这些遗漏的事件,调用时可获取正确的返回值,应用无需特殊适配。 323 324## cl.arkui.5 使用字面量初始化CustomDialogController类实例导致的编译行为变更 325 326**访问级别** 327 328公开接口 329 330**变更原因** 331 332在类CustomDialogController中新增接口getState()获取对应弹窗的状态。当原先使用字面量的方式初始化CustomDialogController实例时,会编译报错。字面量的初始化方式是指采用"{}"直接初始化类的实例,例如: 333```typescript 334let controller: CustomDialogController = { open() {}, close() {} } 335``` 336 337**变更影响** 338 339此变更涉及应用适配,使用字面量初始化CustomDialogController类实例时涉及。 340变更前:开发者可以通过字面量的方式初始化CustomDialogController,如: 341 342```typescript 343let controller: CustomDialogController = { open() {}, close() {} } 344``` 345 346变更后:由于在CustomDialogController中新增了getState()方法,变更前的上述写法未初始化新增的getState()方法,会编译报错。 347 348**起始API Level** 349 350不涉及 351 352**变更发生版本** 353 354从OpenHarmony 6.0.0.32版本开始。 355 356**变更的接口/组件** 357 358编译行为,不涉及接口 359 360**适配指导** 361 362开发者应修改为使用new的方式创建类的实例,如: 363 364```typescript 365let controller: CustomDialogController = new CustomDialogController() 366``` 367 368