如何创建一个window?

如何创建一个window?

HarmonyOS
2024-08-06 16:26:30
413浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
北风_小浦
private static cacheWindow: window.Window;
/**
 * 根据参数创建窗口
 */
static async createWindow(options: WinOptions): Promise<void> {
  if (!options) {
    options = new WinOptions();
  }
  if (!options.name) {
    options.name = 'subWindow';
  }
  if (options.windowType == undefined) {
    options.windowType = window.WindowType.TYPE_DIALOG;
  }
  if (!options.bgColor) {
    options.bgColor = '#33606266';
  }
  try {
    //创建窗口
    let windowClass = await window.createWindow({
      name: options.name,
      windowType: options.windowType,
      ctx: getContext() as common.UIAbilityContext
    });
    //将窗口缓存
    WindowUtil.cacheWindow = windowClass;
    await windowClass.setUIContent(options.contentRouter);
    //获取屏幕四大角
    let d = display.getDefaultDisplaySync();
    //设置窗口大小
    await windowClass.resize(d.width, d.height);
    // 设置窗口背景颜色
    windowClass.setWindowBackgroundColor(options.bgColor);
    //显示窗口
    await windowClass.showWindow();
  } catch (err) {
    let error = err as BusinessError;
    LogUtil.error(`WindowUtil-createWindow-异常 ~ code: ${error.code} -·- message: ${error.message}`);
  }
}
/**
 * 窗口入参对象
 */
class WinOptions {
  /**
   * 窗口名称 默认eftool
   */
  name?: string;
  /**
   * 窗口类型 默认TYPE_DIALOG
   */
  windowType?: window.WindowType;
  /**
   *窗口要显示的路由  如:pages/Welcome需要在main_pages.json中声明
   */
  contentRouter: string = '';
  /**
   * 窗口背景颜色,默认#33606266
   */
  bgColor?: string;
  /**
   * 窗口创建回调函数
   */
  callBack?: () => void;
}
  • 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.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
分享
微博
QQ
微信
回复
2024-08-06 21:44:13
相关问题
如何创建一个worker线程
1746浏览 • 1回复 待解决
如何创建一个pgsql只读账户?
3215浏览 • 2回复 待解决
求告知如何创建一个地图
1189浏览 • 1回复 待解决
HarmonyOS 如何创建一个单线程?
896浏览 • 1回复 待解决
如何创建一个ArkTS应用的项目?
1267浏览 • 1回复 待解决
谁知道如何创建一个线程
1105浏览 • 1回复 待解决
使用自定义函数创建一个UI组
986浏览 • 1回复 待解决