harmony 鸿蒙ArkUI子系统Changelog

  • 2025-06-16
  • 浏览 (5)

ArkUI子系统Changelog

cl.arkui.1 RichEditor(富文本)onDidChange接口变更

访问级别

公开接口

变更原因

在用户执行删除操作,但实际未删除内容时(例如在aboutToDelete接口中拦截了删除操作),也回调了OnDidChange接口,不符合接口行为定义。

变更影响

该变更为不兼容变更。

变更前: 在用户执行删除操作,但实际未删除内容时回调了OnDidChange接口。

变更后: 在用户执行删除操作,但实际未删除内容时不回调OnDidChange接口。

起始API Level

API 12

变更发生版本

从OpenHarmony SDK 5.0.0.52开始。

变更的接口/组件

RichEditor

适配指导

默认行为变更,无需适配,但应注意变更后的行为是否对整体应用逻辑产生影响。

cl.arkui.2 RichEditor(富文本)删除完成后光标位置变更

访问级别

公开接口

变更原因

开发者在aboutToDelete回调中设置光标/选中区后,删除完成后,光标位置异常。

变更影响

该变更为不兼容变更。

变更前:

1、开发者在aboutToDelete回调中设置光标,删除完成后,光标位置为开发者设置的光标位置。

2、开发者在aboutToDelete回调中设置选中区,删除完成后,光标位置为开发者设置的选中区的右边界。

变更后: 开发者在aboutToDelete回调中设置光标/选中区,删除完成后,光标位置为被删除内容的起始索引位置。

起始API Level

API 12

变更发生版本

从OpenHarmony SDK 5.0.0.52开始。

变更的接口/组件

RichEditor

适配指导

默认行为变更,无需适配,但应注意变更后的行为是否对整体应用逻辑产生影响。

cl.arkui.3 RichEditor(富文本)从组件外拖入内容onWillChange、onDidChange回调变更

访问级别

公开接口

变更原因

从组件外拖入内容时,onWillChange、onDidChange多回调了一次相同的内容,不符合实际文本变化情况。

变更影响

该变更为不兼容变更。

变更前: 从组件外拖入内容时,onWillChange、onDidChange回调了两次同样的内容。

变更后: 从组件外拖入时,onWillChange、onDidChange回调一次。

起始API Level

API 12

变更发生版本

从OpenHarmony SDK 5.0.0.52开始。

变更的接口/组件

RichEditor

适配指导

默认行为变更,无需适配,但应注意变更后的行为是否对整体应用逻辑产生影响。

cl.arkui.4 RichEditor(富文本)onWillChange接口返回值变更

访问级别

公开接口

变更原因

在添加Symbol时onWillChange接口返回值中缺少了SymbolId。

变更影响

该变更为不兼容变更。

变更前: 在使用addSymbolSpan接口添加symbol时,onWillChange接口返回的RichEditorTextSpanResult中的value字段为空。

变更后: 在使用addSymbolSpan接口添加symbol时,onWillChange接口返回的RichEditorTextSpanResult中的value字段返回SymboId。

起始API Level

API 12

变更发生版本

从OpenHarmony SDK 5.0.0.52开始。

变更的接口/组件

RichEditor

适配指导

默认行为变更,无需适配,但应注意变更后的行为是否对整体应用逻辑产生影响。

cl.arkui.5 RichEditor(富文本)TypingStyle默认字体大小变更

访问级别

公开接口

变更原因

开发者在设置TypingStyle但是没有设置其中的字体大小时,TypingStyle的默认字体大小为14px,显示效果异常。

变更影响

该变更为不兼容变更。

变更前: 开发者使用setTypingStyle接口设置TypingStyle但是没有设置其中的字体大小时,输入新的内容,新输入的文本字体大小为14px。

变更后: 开发者使用setTypingStyle接口设置TypingStyle但是没有设置其中的字体大小时,输入新的内容,新输入的文本字体大小为16fp。

起始API Level

API 12

变更发生版本

从OpenHarmony SDK 5.0.0.52开始。

变更的接口/组件

RichEditor

适配指导

默认行为变更,无需适配,但应注意变更后的行为是否对整体应用逻辑产生影响。

cl.arkui.6 鼠标按键处理行为变更

访问级别

公开接口

变更原因

在开发者为组件配置鼠标事件后,若在组件区域内按下鼠标非左键并拖拽至组件区域外释放,此时将无法接收到按键释放事件,这可能导致事件配对失败,进而引发应用程序行为异常。此变更确保开发者能够接收到匹配的按键按下与释放事件。

变更影响

该变更为不兼容变更。

变更前:在开发者为组件配置了鼠标事件后,如果在组件区域内按下鼠标非左键,并将鼠标移动至组件区域外再释放按键,此时将无法接收到按键释放事件。

变更后:在开发者为组件配置了鼠标事件后,如果在组件区域内按下鼠标非左键,并将鼠标移动至组件区域外再释放按键,此时可以接收到按键释放事件。

起始API Level

API 8

变更发生版本

从OpenHarmony SDK 5.0.0.52开始。

变更的接口/组件

ArkTS的onMouse接口和Native的OH_NativeXComponent_GetMouseEvent接口。

适配指导

默认行为变更,无需适配,但应注意变更后的行为是否对整体应用逻辑产生影响。

cl.arkui.7 动画接口在播放次数为无限循环时的行为变更

访问级别

公开接口

变更原因

非动画的闭包函数修改状态变量,存在被带入无限循环动画的风险,产生预期外的无限循环动画且无法停止。

变更影响

该变更为不兼容变更。

变更前:在调用无限循环动画接口(例如:无限循环的animateTo)时,首次布局过程中触发的同步回调里所做的修改,会被纳入无限循环动画中,从而产生多余的动画。

变更后:在调用无限循环动画接口(例如:无限循环的animateTo)时,首次布局过程中触发的同步回调里所做的修改,系统至多做2次额外刷新保护,避免动画前的同步回调被纳入无限循环动画中,对于2次额外刷新仍不能保护住的同步回调,和原行为一致也会产生无限循环动画。

起始API Level

API 7(animateTo)

API 12(animateToImmediately)

API 11(UIContext.keyframeAnimateTo)

API 11(UIContext.animateTo)

API 12(UIContext.animateToImmediately)

变更发生版本

从OpenHarmony SDK 5.0.0.52开始。

变更的接口/组件

1、animateTo;

2、animateToImmediately;

3、UIContext.keyframeAnimateTo;

4、UIContext.animateTo;

5、UIContext.animateToImmediately;

适配指导

为了创建无限循环的动画,必须明确地将修改操作置于动画接口(例如:无限循环的animateTo)的闭包函数内。

animateTo适配前:

@Entry
@Component
struct Example {
  @State rotateAngle: number = 0
  @State wid: number = 100
  @State color: Color = Color.Red

  build() {
    Column() {
      Column()
        .size({width: 100, height: 100})
        .backgroundColor(this.color)
      Button('animate')
        .margin(50)
        .width(this.wid)
        .rotate({ x: 0, y: 0, z: 1, angle: this.rotateAngle })
        .onSizeChange((oldValue: SizeOptions, newValue: SizeOptions)=>{
          // animateTo前修改wid时的布局同步的触发了onSizeChange事件,也会被带入无限循环动画中
          // 产生背景色的无限循环动画
          if (Number(newValue.width) >= 150) {
            this.color = Color.Blue;
          } else {
            this.color = Color.Red;
          }
        })
        .onClick(()=>{
          this.wid = 200;
          animateTo({
            iterations: -1, // 设置-1表示动画无限循环
            playMode: PlayMode.Alternate,
          }, () => {
            this.rotateAngle = 90
          })
        })
    }.width('100%').margin({ top: 5 })
  }
}

animateTo适配后:

@Entry
@Component
struct Example {
  @State rotateAngle: number = 0
  @State wid: number = 100
  @State color: Color = Color.Red

  build() {
    Column() {
      Column()
        .size({width: 100, height: 100})
        .backgroundColor(this.color)
      Button('animate')
        .margin(50)
        .width(this.wid)
        .rotate({ x: 0, y: 0, z: 1, angle: this.rotateAngle })
        .onSizeChange((oldValue: SizeOptions, newValue: SizeOptions)=>{
          // onSizeChange为同步回调,最好不在同步回调中直接修改状态变量。  
        })
        .onClick(()=>{
          this.wid = 200;
          // 如果不需要产生color的动画则在动画外直接修改color,this.color = Color.Blue,而不是在同步回调中
          animateTo({
            iterations: -1, // 设置-1表示动画无限循环
            playMode: PlayMode.Alternate,
          }, () => {
            this.rotateAngle = 90
            // 如果需要产生color的动画则在此处加上this.color = Color.Blue,将color的改变放在动画闭包中
          })
        })
    }.width('100%').margin({ top: 5 })
  }
}

你可能感兴趣的鸿蒙文章

harmony 鸿蒙程序访问控制子系统变更说明

harmony 鸿蒙包管理子系统Changelog

harmony 鸿蒙DFX子系统Changelog

harmony 鸿蒙驱动子系统扩展外设管理模块Changelog

harmony 鸿蒙multimedia子系统变更说明

0  赞