在鸿蒙OS的Stage模型下,应用主窗口由UIAbility创建和管理。
应用主窗口
设置应用主窗口是构建鸿蒙OS 应用的基础步骤。通过设置主窗口,你可以:
- 控制应用的显示区域和尺寸。
- 自定义应用的外观,例如背景色、亮度和可触性。
- 加载应用的首页面内容。
本质上,你是在配置应用与用户交互的第一个界面。
开发步骤
1. 获取应用主窗口
在onWindowStageCreate
回调函数中,你可以使用windowStage.getMainWindow()
方法获取应用主窗口的实例。
windowStage.getMainWindow((err, data) => {
if (err.code) {
console.error('Failed to obtain the main window. Cause: ' + JSON.stringify(err));
return;
}
windowClass = data;
console.info('Succeeded in obtaining the main window. Data: ' + JSON.stringify(data));
// ...后续操作
});
getMainWindow()
方法接收一个回调函数作为参数,该回调函数包含两个参数:
err
:表示获取窗口是否出错,如果出错则包含错误信息。data
:表示获取到的主窗口实例。
2. 设置主窗口属性
获取到主窗口实例后,可以使用其提供的API设置窗口属性,例如:
setWindowTouchable(isTouchable: boolean, callback: AsyncCallback<void>): void;
:设置窗口是否可触。setBackgroundColor(color: number, callback: AsyncCallback<void>): void;
:设置窗口背景颜色。setBrightness(brightness: number, callback: AsyncCallback<void>): void;
:设置窗口亮度。
更多属性设置方法请参考官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/module-configuration-file-0000001427744540-V2#ZH-CN_TOPIC_0000001573929365__abilities标签。
3. 加载目标页面
使用windowStage.loadContent()
方法加载主窗口的目标页面。
windowStage.loadContent("pages/page2", (err) => {
if (err.code) {
console.error('Failed to load the content. Cause:' + JSON.stringify(err));
return;
}
console.info('Succeeded in loading the content.');
});
loadContent()
方法接收两个参数:
- 第一个参数是目标页面的路径。
- 第二个参数是一个回调函数,用于处理加载结果。
完整示例代码
import UIAbility from '@ohos.app.ability.UIAbility';
export default class EntryAbility extends UIAbility {
onWindowStageCreate(windowStage) {
// 1. 获取应用主窗口。
let windowClass = null;
windowStage.getMainWindow((err, data) => {
if (err.code) {
console.error('Failed to obtain the main window. Cause: ' + JSON.stringify(err));
return;
}
windowClass = data;
console.info('Succeeded in obtaining the main window. Data: ' + JSON.stringify(data));
// 2. 设置主窗口属性。以设置"是否可触"属性为例。
let isTouchable = true;
windowClass.setWindowTouchable(isTouchable, (err) => {
if (err.code) {
console.error('Failed to set the window to be touchable. Cause:' + JSON.stringify(err));
return;
}
console.info('Succeeded in setting the window to be touchable.');
})
})
// 3. 为主窗口加载对应的目标页面。
windowStage.loadContent("pages/page2", (err) => {
if (err.code) {
console.error('Failed to load the content. Cause:' + JSON.stringify(err));
return;
}
console.info('Succeeded in loading the content.');
});
}
};
通过以上步骤,就可以在鸿蒙OS应用中成功设置应用主窗口了。