HarmonyOS Next如何配置支持智慧多窗?
本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。
HarmonyOS Next如何配置支持智慧多窗?
本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。
HarmonyOS Next配置支持智慧多窗的方法如下:
当应用需要智慧多窗的能力时,可以通过在module.json5
配置文件中对应标签添加相关字段声明支持,具体配置如下:
module.json5
配置文件中abilities
标签下的supportWindowMode
属性增加“floating”字段或使用默认值以声明应用支持悬浮窗。supportWindowMode
属性主要标识当前UIAbility所支持的窗口模式。module.json5
配置文件中abilities
标签下的supportWindowMode
属性增加“split”字段或使用默认值以声明应用支持分屏。module.json5
配置文件中abilities
标签下的preferMultiWindowOrientation
属性增加“landscape”或者“landscape_auto”配合API以声明应用支持横向悬浮窗。preferMultiWindowOrientation
属性主要标识当前UIAbility组件多窗布局方向。由于应用从全屏进入智慧多窗(悬浮窗/分屏)模式后,窗口尺寸、宽高比例会发生变化,所以需要开发者适配应用窗口在不同尺寸、不同比例下的自适应布局,以确保应用窗口在各种形态下都能呈现出最佳的视觉效果,提供更好的用户体验。主要可以通过窗口的on(‘windowSizeChange’)
方法实现对窗口尺寸大小变化的监听,再根据窗口的尺寸变化更新调整自身应用布局以实现适配。
以下是实现应用布局自适应的示例代码:
import { UIAbility } from '@kit.AbilityKit';
import { window } from '@kit.ArkUI';
export default class EntryAbility extends UIAbility {
onWindowStageCreate(windowStage: window.WindowStage): void {
console.info('Ability onWindowStageCreate.');
windowStage.getMainWindow().then((windowClass) => {
// 获取窗口尺寸,存入AppStorage
AppStorage.setOrCreate('winWidth', windowClass.getWindowProperties().windowRect.width);
AppStorage.setOrCreate('winHeight', windowClass.getWindowProperties().windowRect.height);
// 监听窗口尺寸变化
windowClass.on('windowSizeChange', (windowSize) => {
AppStorage.setOrCreate('winWidth', windowSize.width);
AppStorage.setOrCreate('winHeight', windowSize.height);
});
});
windowStage.loadContent('pages/Index', (err) => {
if (err.code) {
console.error('Failed to load the content. Cause: ' + JSON.stringify(err));
}
});
}
}
在onWindowStageCreate
方法中,获取Window对象,通过getWindowProperties
方法返回值中的windowRect
获取窗口尺寸,写入AppStorage
中用于UI侧窗口尺寸的首次初始化赋值。使用on('windowSizeChange')
注册窗口尺寸变化时的监听,并写入AppStorage
中供UI侧布局使用。UI侧通过@StorageLink
绑定窗口尺寸后,AppStorage
中属性key值对应的数据一旦改变,UI侧会同步修改。@StorageLink
装饰的数据本身是状态变量,所以窗口尺寸发生变化时,会引起组件的重新渲染,开发者可以根据最新的窗口尺寸动态调整应用布局。
通过以上配置和代码实现,HarmonyOS Next应用即可支持智慧多窗功能,为用户提供更加高效的多任务处理体验。
1 回答675 阅读✓ 已解决
1 回答934 阅读
1 回答750 阅读
1 回答724 阅读
1 回答631 阅读
1 回答642 阅读
1 回答637 阅读
当应用需要配置是否支持悬浮窗/分屏能力时,可以通过在module.json5配置文件中abilities标签下添加supportWindowMode字段来实现,supportWindowMode属性主要标识当前UIAbility所支持的窗口模式
本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。