harmony 鸿蒙arkui子系统ChangeLog

  • 2023-10-30
  • 浏览 (348)

arkui子系统ChangeLog

cl.arkui.1 滚动事件上报滚动状态枚举值规则变更

ScrollState枚举值在API version 9及以下上报规则:

名称 描述
Idle 空闲状态。使用控制器提供的方法滚动、拖动滚动条滚动时触发。
Scroll 手指拖动状态。使用手指拖动List滚动时触发。
Fling 惯性滚动状态。快速划动松手后惯性滚动和划动到边缘回弹时触发。

从API version 10开始,ScrollState上报规则变更为:

名称 描述
Idle 空闲状态。滚动状态回归空闲的时候触发,一个滚动流程的最后一帧回调。控制器提供的无动画的方法控制的滚动也会触发。
Scroll 滚动状态。手指拖动List滚动时触发,拖动滚动条滚动时触发,滚动鼠标滚轮触发。
Fling 惯性滚动状态。由动画触发的滚动,包括快速划动松手后的惯性滚动,划动到边缘回弹的滚动,快速拖动内置滚动条松手后的惯性滚动,使用滚动控制器提供的带动画的方法控制的滚动。

ScrollState枚举变更如下。

场景 API version 9及以下 API version 10开始
手指拖动滑动 Scroll Scroll
惯性滚动 Fling Fling
过界回弹 Fling Fling
鼠标滚轮滚动 Idle Scroll
拖动滚动条 Idle Scroll
滚动控制器滚动(带动画) Idle Fling
滚动控制器滚动(不带动画) Idle Idle

变更影响

1、ScrollState枚举值从API version 7开始提供,在API version 10变更,不影响API version 9及以下版本使用。
2、API version 9及以下使用到这个枚举值的接口有List组件的onScroll事件、onScrollFrameBegin事件、Scroll组件的onScrollFrameBegin事件,API version 9及以下滚动状态上报规则不变,不会产生影响;从API version 10开始,List组件的onScroll事件在文章起始列出的部分场景中上报的枚举值会有变化。

关键接口/组件变更

List组件接口文档: - List组件事件 - List组件ScrollState枚举说明

适配指导

List组件绑定onScroll事件,通过onScroll事件上报当前滚动状态。API version 9及以下上报的滚动状态仍遵循变更前规则,从API version 10开始,上报的滚动状态遵循变更后规则。

参考代码如下:

// xxx.ets
@Entry
@Component
struct ListExample {
  private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

  build() {
    Column() {
      List({ space: 20, initialIndex: 0 }) {
        ForEach(this.arr, (item) => {
          ListItem() {
            Text('' + item)
              .width('100%').height(100).fontSize(16)
              .textAlign(TextAlign.Center).borderRadius(10).backgroundColor(0xFFFFFF)
          }
        }, item => item)
      }
      .listDirection(Axis.Vertical) // 排列方向
      .edgeEffect(EdgeEffect.Spring) // 边缘效果设置为Spring
      .onScroll((scrollOffset: number, scrollState: ScrollState) => {
        console.log(`onScroll scrollState = ${ScrollState[scrollState]}, scrollOffset = ${[scrollOffset]}`)
      })
      .width('90%')
    }
    .width('100%')
    .height('100%')
    .backgroundColor(0xDCDCDC)
    .padding({ top: 5 })
  }
}

cl.arkui.2 ArkUI系统组件使用场景限制

对ArkUI系统组件的使用场景进行限制,仅允许在struct的build方法内, pageTransition方法内或@Builder修饰的函数内使用。

示例:

@Entry
@Component
struct Index {
  build() {
    Row() {
    }

  }
}
// ERROR:UI component 'Text' cannot be used in this place.
Text('Hello World')

变更影响

如果ArkUI系统组件不在struct的build方法内,pageTransition方法内,@Builder修饰的函数内使用,编译报错。

关键的接口/组件变更

不涉及。

适配指导

ArkUI系统组件必须在struct的build方法内,pageTransition方法内,@Builder修饰的函数内使用。

cl.arkui.3 RowSplit/ColumnSplit组件布局与行为变更

1、RowSplit/ColumnSplit交叉轴方向未设置大小时,由当前的适应父节点大小改为适应子节点大小。
2、RowSplit/ColumnSplit分割线拖动后子节点行为变更,变更前拖动分割线时,子节点不压缩和拉伸,只进行平移; 变更后拖动分割线时,子节点拉伸和压缩。
3、使用clip属性对子组件内容超出组件区域进行裁剪时,RowSplit裁剪区域由子组件区域的右侧改为子组件区域的左右两侧, ColumnSplit裁剪区域由子组件区域的下侧改为子组件区域的上下两侧。

变更影响
以上3点变更只影响API version 10及以后版本,API version 9及以前RowSplit/ColumnSplit组件布局与行为仍遵循变更前规则。

关键接口/组件变更

不涉及

cl.arkui.4 Search组件/TextInput组件/TextArea组件布局与行为变更

1、Search/TextInput/TextArea中textRect中位置变更前仅相对padding偏移,变更后位置相对padding和border计算偏移。
2、Search中textfield宽度变更前为search宽度减去search icon的宽度和icon左右space宽度,变更后需要再减去padding和border的宽度;

变更影响

以上变更只影响API version 10及以后版本,API version 9及以前仍遵循变更前规则。

关键的接口/组件变更

不涉及

适配指导

不涉及

你可能感兴趣的鸿蒙文章

harmony 鸿蒙设备管理ChangeLog

harmony 鸿蒙位置服务子系统ChangeLog

harmony 鸿蒙输入法框架子系统-输入法框架ChangeLog

harmony 鸿蒙multimedia子系统ChangeLog

harmony 鸿蒙主题框架子系统锁屏管理ChangeLog

0  赞