harmony 鸿蒙ArkUI子系统Changelog
ArkUI子系统Changelog
cl.arkui.1 TextClock组件构造参数timeZoneOffset支持设置特定浮点数
访问级别
公开接口
变更原因
某些国家和地区时区偏移量为浮点数,因此需要支持设置浮点数。
变更影响
该变更为兼容性变更,变更后timeZoneOffset支持设置特定浮点数。
API Level
8
变更发生版本
从OpenHarmony SDK 4.1.6.5 版本开始。
变更的接口/组件
API 11之前,TextClock组件构造参数timeZoneOffset设置浮点数会取对应的整数值。
API 11及之后,TextClock组件构造参数timeZoneOffset设置{ 9.5, 3.5, -3.5, -4.5, -5.5, -5.75, -6.5, -9.5, -10.5, -12.75 }里的值会取对应的浮点数。
适配指导
请查阅TextClock组件文档进行适配。
cl.arkui.2 Gauge组件的默认阴影模糊半径变更
访问级别
公开接口
变更原因
当前Gauge组件的默认阴影模糊半径为5vp、UX检视时发现模糊半径过小,因此依照UX规范增加阴影模糊半径到20vp。
变更影响
该变更为兼容性变更,改变了组件默认情况下的阴影模糊半径,提升了组件的默认显示效果。
API Level
11
变更发生版本
从OpenHarmony SDK 4.1.6.5开始。
变更的接口/组件
OpenHarmony SDK 4.1.6.5前,Gauge组件的默认阴影模糊半径为5vp。
OpenHarmony SDK 4.1.6.5及以后,Gauge组件的默认阴影模糊半径为20vp。
适配指导
默认效果变更,无需适配,但应注意变更后的默认效果是否符合开发者预期,如不符合则应自定义修改效果控制变量以达到预期。
cl.arkui.3 getItemRect, getItemRectInGroup接口返回值单位变更
访问级别
公开接口
变更原因
返回值类型为RectResult,位置和宽高以px为单位不合理,故变更返回值单位为vp。
变更影响
该变更为非兼容性变更。滚动组件getItemRect接口和List组件getItemRectInGroup接口的返回值单位从px变更为vp。具体受影响的场景如下:
a) 滚动组件通过getItemRect接口获取子组件大小位置
API version 11变更前:大小位置返回值都以px为单位。
API version 11变更后:大小位置返回值都以vp为单位。
b) List组件通过getItemRectInGroup接口获取子组件ListItemGroup内子组件ListItem的大小位置
API version 11变更前:大小位置返回值都以px为单位。
API version 11变更后:大小位置返回值都以vp为单位。
API Level
11
变更发生版本
从OpenHarmony SDK 4.1.6.5开始。
变更的接口/组件
滚动组件(List、Grid、WaterFlow、Scroll)getItemRect接口、List组件getItemRectInGroup接口
适配指导
滚动组件(List、Grid、WaterFlow、Scroll)getItemRect接口、List组件getItemRectInGroup接口的返回值单位由原来的px变更为vp。如果需要使用px单位类型,可用vp2px接口做单位转换。
cl.arkui.4 自定义组件构造传参赋值中装饰器变量@Link/@ObjectLink校验日志级别变更
访问级别
公开接口
变更原因
装饰器@Link/@ObjectLink父组件校验由WARN 变成ERROR。
变更影响
该变更为非兼容性变更,变更后@Link/@ObjectLink父组件校验报错。
API Level
11
变更发生版本
从OpenHarmony SDK 4.1.6.5 版本开始。
示例:
let NextID: number = 1;
@Observed
class ClassA {
public id: number;
public c: number;
constructor(c: number) {
this.id = NextID++;
this.c = c;
}
}
@Entry
@Component
struct Parent {
@State message: string = 'Hello';
build() {
Column() {
// ERROR: Property 'message' in the custom component 'Child' is missing (mandatory to specify).
// ERROR: Property 'message1' in the custom component 'Child' is missing (mandatory to specify).
Child();
}
}
}
@Component
struct Child {
@Link message: string;
@ObjectLink message1: ClassA;
build() {
Row() {
}
}
}
变更的接口/组件
不涉及
适配指导
子组件使用了装饰器@Link/@ObjectLink,父组件使用带有装饰器@Link/@ObjectLink的自定义组件时,父组件必须给@Link/@ObjectLink修饰的变量传值。
cl.arkui.5 bindmenu使用isShow时点击事件变更
访问级别
公开接口
变更原因
在bindMenu使用isShow时,只允许isShow控制menu的开启。
变更影响
该变更为非兼容性变更,变更后在bindMenu使用isShow的情况下,点击父组件不会弹出menu。
API Level
11
变更发生版本
从OpenHarmony SDK 4.1.6.5 版本开始。 示例:
@Entry
@Component
struct MenuExample {
@State listData: number[] = [0, 0, 0]
@State isShow: boolean = false
@Builder MenuBuilder() {
Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
ForEach(this.listData, (item:number, index) => {
Column() {
Row() {
Image($r("app.media.icon")).width(20).height(20).margin({ right: 5 })
Text(`Menu${index as number + 1}`).fontSize(20)
}
.width('100%')
.height(30)
.justifyContent(FlexAlign.Center)
.align(Alignment.Center)
.onClick(() => {
console.info(`Menu${index as number + 1} Clicked!`)
})
if (index != this.listData.length - 1) {
Divider().height(10).width('80%').color('#ccc')
}
}.padding(5).height(40)
})
}.width(100)
}
build() {
Column() {
Text('click for menu')
.fontSize(20)
.margin({ top: 20 })
.onClick(()=>{
this.isShow = true
})
.bindMenu(this.isShow, this.MenuBuilder,
{
onDisappear: ()=>{
this.isShow = false
}
}
)
}
.height('100%')
.width('100%')
.backgroundColor('#f0f0f0')
}
}
变更的接口/组件
bindMenu
适配指导
使用isShow后,需要在其他事件中将isShow从false改成true,menu才会弹出,例如点击事件、手势事件以及hover等,如果出现修改isShow的值后,菜单无法弹出,可以在isShow修改前后加上日志打印该值,判断isShow是否有变化, 如果没有变化,需要检查是不是在menu消失的时候没有在onDisappear里更新isShow的值为false,或者初始情况下将isShow设置为了true。
cl.arkui.6 OffscreenCanvas类声明式继承错误删除
访问级别
公开接口
变更原因
OffscreenCanvas类声明时父类关系继承错误会导致DevEco Studio错误联想出非OffscreenCanvas本身的方法和属性。
变更影响
该变更为兼容性变更,变更后OffscreenCanvas类的方法和属性在DevEco studio中可正确联想,先前因OffscreenCanvas类声明时父类继承错误导致的非OffscreenCanvas本身的方法和属性不再被联想出来。
API Level
11
变更发生版本
从OpenHarmony SDK 4.1.6.5 版本开始。
变更的接口/组件
OffscreenCanvas
适配指导
DevEco Studio中OffscreenCanvas代码编辑联想功能,不涉及适配。
cl.arkui.7 layoutWeight支持float类型变更
访问级别
公开接口
变更原因
layoutWeight需要更精细的设置。
变更影响
该变更为兼容性变更,变更后layoutWeight参数支持float类型。
API Level
9
变更发生版本
从OpenHarmony SDK 4.1.6.5开始。
变更的接口/组件
涉及到layoutWeight接口
API 12前,参数为float类型,小数点后不生效。
API 12及以后,参数为float类型,小数点后生效。
适配指导
接口参数类型变更,不涉及适配。
cl.arkui.8 GridRow组件高度自适应变更
访问级别
公开接口
变更原因
原规格遗留问题,变更前用户设置了GridRow组件的height属性,而实际上GridRow组件的高度并不会按设置的height进行绘制,而是会自适应子组件高度。 现将规格确定为:若用户设置了GridRow组件的height属性,则GridRow组件的高度按设置的height进行绘制,若用户没有设置GridRow组件的height属性,则自适应子组件高度。
变更影响
该变更为非兼容性变更。改变了GridRow组件的高度设置,可按照用户设置的高度进行绘制。
API Level
9
变更发生版本
从OpenHarmony SDK 4.1.6.5开始。
变更的接口/组件
涉及到GridRow组件
API 11前,GridRow组件无论是否设置height属性,其高度都会自适应子组件高度。
API 11及以后,GridRow组件设置了height属性后不再自适应子组件高度,而是按用户设置高度进行绘制;如果没有设置height属性,则仍会自适应子组件高度。
适配指导
组件高度自适应变更,不涉及适配。
cl.arkui.9 surface类型XComponent组件backgroundColor属性行为变更
访问级别
公开接口
变更原因
surface类型的XComponent组件需支持设置背景色。
变更影响
该变更为非兼容性变更,场景为给surface类型的XComponent组件设置backgroundColor属性,具体行为如下:
API version 11变更前:无论设置何种属性,背景色均为默认黑色背景色。
API version 11变更后:组件背景色会生效所设置的颜色。
API Level
9
变更发生版本
从OpenHarmony SDK 4.1.6.5 版本开始。
示例:
@Entry
@Component
struct XComponentBKColor {
private surfaceId: string = ''
private xComponentContext: Record<string, () => void> = {}
xComponentController: XComponentController = new XComponentController()
build() {
Row() {
XComponent({
id: 'xcomponentid',
type: XComponentType.SURFACE,
controller: this.xComponentController
})
.onLoad(() => {
this.xComponentController.setXComponentSurfaceSize({ surfaceWidth: 1920, surfaceHeight: 1080 })
this.surfaceId = this.xComponentController.getXComponentSurfaceId()
this.xComponentContext = this.xComponentController.getXComponentContext() as Record<string, () => void>
})
.width('640px')
.height('480px')
.backgroundColor(Color.White)
}
}
}
变更的接口/组件
XComponent
适配指导
给surface类型的XComponent组件设置backgroundColor属性后,确认是应用的场景所需要的背景色。
cl.arkui.10 TextInput/TextArea组件光标超出圆角部分截断显示效果变更
访问级别
公开接口
变更原因
该变更为非兼容性变更,当设置TextInput组件padding为0时,光标会显示在输入框默认圆角外,不符合应用诉求。
变更影响
API version 11变更前:输入框使用默认圆角, 设置padding为0,光标超出输入框组件圆角的部分未被截断。
API version 11变更后:输入框使用默认圆角, 设置padding为0,光标超出输入框组件圆角的部分会被截断。
API Level
9
变更发生版本
从OpenHarmony SDK 4.1.6.5开始。
变更的接口/组件
TextInput/TextArea
适配指导
默认行为变更,不涉及适配。
cl.arkui.11 全局接口作用的UI实例跟踪匹配规则变更
访问级别
公开接口
变更原因
规范全局接口UI实例匹配行为,避免因实例不明确造成的非预期行为。
变更影响
多实例场景下,在未绑定UI实例的上下文中调用全局接口(如在异步回调中使用路由接口),接口的作用实例可能发生变化。
全局接口需要明确的UI实例上下文以确定作用的UI实例,建议通过绑定实例的接口进行调用。
API Level
8
变更发生版本
从OpenHarmony SDK 4.1.6.5开始。
变更的接口/组件
不推荐开发者在多实例场景下使用如下接口,建议开发者使用适配指导中的替代接口。
API | 说明 |
---|---|
@ohos.animator | 自定义动画控制器 |
@ohos.arkui.componentSnapshot | 组件截图 |
@ohos.arkui.componentUtils | 组件工具类 |
@ohos.arkui.dragController | 拖拽控制器 |
@ohos.arkui.inspector | 组件布局回调 |
@ohos.arkui.observer | 无感监听 |
@ohos.font | 自定义字体 |
@ohos.measure | 文本计算 |
@ohos.mediaquery | 媒体查询 |
@ohos.promptAction | 弹窗 |
@ohos.router | 页面路由 |
AlertDialog | 警告弹窗 |
ActionSheet | 列表选择弹窗 |
CalendarPickerDialog | 日历选择器弹窗 |
DatePickerDialog | 日期滑动选择弹窗 |
TimePickerDialog | 时间滑动选择器弹窗 |
TextPickerDialog | 文本滑动选择器弹窗 |
ContextMenu | 菜单控制 |
vp2px/px2vp/fp2px/px2fp/lpx2px/px2lpx | 像素单位转换 |
focusControl | 焦点控制 |
cursorControl | 光标控制 |
getContext | 获取当前的Ability的Context |
LocalStorage.getShared | 获取Ability传递的Storage |
animateTo | 显式动画 |
animateToImmediately | 显式立即动画 |
适配指导
使用组件内置方法getUIContext
,可直接获取当前组件所在的UIContext,并使用如下UIContext中的API获取与实例绑定的对象。
UIContext接口 | 说明 |
---|---|
getRouter | 页面路由 |
getComponentUtils | 组件工具类 |
getUIInspector | 组件布局回调 |
getUIObserver | 无感监听 |
getMediaQuery | 媒体查询 |
getFont | 字体 |
getPrompAction | 弹窗 |
animateTo | 显示动画 |
showAlerDialog | 警告弹窗 |
showActionSheet | 列表选择弹窗 |
showDatePickerDialog | 日期滑动选择弹窗 |
showTimePickerDialog | 时间滑动选择器弹窗 |
showTextPcikerDialog | 文本滑动选择器弹窗 |
createAnimator | 自定义动画控制器 |
KeyboardAvoidMode | 键盘避让 |
getAtomicServiceBar | 云服务 |
getDragController/getDragPreview | 拖拽 |
runScopedTask | 执行绑定实例的闭包 |
对于以下UIContext中尚不具备的API,可使用runScopedTask进行适配:
接口 | 说明 |
---|---|
measure | 文本计算 |
getContext | 获取当前的Ability的Context |
LocalStorage.getShared | 获取Ability传递的Storage |
animateToImmediately | 显式立即动画 |
ContextMenu | 菜单控制 |
vp2px/px2vp/fp2px/px2fp/lpx2px/px2lpx | 像素单位转换 |
focusControl | 焦点控制 |
cursorControl | 光标控制 |
@ohos.arkui.componentSnapshot | 组件截图 |
示例1
// 使用绑定实例的路由对象进行页面路由
@Entry
@Component
struct Index {
build() {
Row() {
Button()
.onClick(() => {
let uiContext = this.getUIContext();
let uiRouter = uiContext.getRouter();
uiRouter.pushUrl({
url: 'pages/Page'
})
})
}
}
}
示例2
// 执行绑定实例的闭包
@Entry
@Component
struct Index {
build() {
Row() {
Button()
.onClick(() => {
let uiContext = this.getUIContext();
uiContext.runScopedTask(() => {
let context = getContext();
console.log('Get context: ' + JSON.stringify(context))
})
})
}
}
}
你可能感兴趣的鸿蒙文章
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
7、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦