本文原创发布在华为开发者社区。
介绍
本示例基于\@ohos.window实现了创建和关闭两个子窗口的功能。
效果预览
使用说明
- 点击“open sub window1”按钮,打开第一个子窗口,点击“close sub window1”按钮,子窗口关闭。
- 点击“open sub window2”按钮,打开第一个子窗口,点击“close sub window2”按钮,子窗口关闭。
实现思路
调用AppStorage.get方法获取主窗口对应的属性值windowStage,调用createSubWindow方法创建该WindowStage实例下的子窗口,再设置子窗口的大小、是否可触、是否全屏等属性。核心代码如下,源码参考Index.ets。
//设置子窗口属性:大小,位置等
//设置子窗口位置
sub.subWindowClass.moveWindowTo(sub.positionX,sub.positionY,(err:BusinessError,data) => {
if (err.code) {
console.error('Failed to move the window.Cause:' + JSON.stringify(err))
return
}
console.info('succeded in moving the sub window')
})
// 设置子窗口大小
sub.subWindowClass.resize(sub.windowWidth,sub.windowHeight,(err:BusinessError,data) => {
if (err.code) {
console.error('Failed to set the sub window size.Cause:' + JSON.stringify(err))
return
}
console.info('Succeded in setting the sub window size')
})
//设置子窗口是否可触
sub.subWindowClass.setWindowTouchable(true,(err:BusinessError,data) => {
if (err.code) {
console.error('set window touch Failed' + JSON.stringify(err))
return
}
console.info('set window touch succeeded')
})
// 设置子窗口是否全屏(能够设置的前提是未设置子窗口的位置和大小)
sub.subWindowClass.setWindowLayoutFullScreen(false,(err:BusinessError,data) => {
if (err.code) {
console.error('set window layout full screen Failed' + JSON.stringify(err))
return
}
console.info('set window layout full screen succeeded')
})
//加载子窗口页面
sub.subWindowClass.setUIContent(sub.windowPath,(err:BusinessError,data) => {
if (err.code) {
console.error('set sub ui content Failed. Cause:' + JSON.stringify(err))
return
}
console.info('set sub window ui content succeeded')
})
//显示子窗口内容
sub.subWindowClass.showWindow((err:BusinessError,data) => {
if (err.code) {
console.error('show sub window Failed.Cause:' + JSON.stringify(err))
return
}
console.info('show sub window succeeded')
})
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。