实现创建子窗口功能鸿蒙示例代码

鸿蒙场景化示例代码技术工程师
发布于 2025-3-13 11:26
浏览
0收藏

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

介绍

本示例基于@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.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.

分类
收藏
回复
举报
回复
    相关推荐