本文原创发布在华为开发者社区

介绍

本示例基于\@ohos.window实现了创建和关闭两个子窗口的功能。

实现创建子窗口功能源码链接

效果预览

请添加链接描述

使用说明

  1. 点击“open sub window1”按钮,打开第一个子窗口,点击“close sub window1”按钮,子窗口关闭。
  2. 点击“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')
    })

鸿蒙场景化代码
1 声望0 粉丝