如何创建一个window?

如何创建一个window?

HarmonyOS
2024-08-06 16:26:30
浏览
收藏 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;
}
分享
微博
QQ
微信
回复
2024-08-06 21:44:13
相关问题
如何创建一个worker线程
594浏览 • 1回复 待解决
如何创建一个pgsql只读账户?
2233浏览 • 2回复 待解决
求告知如何创建一个地图
110浏览 • 1回复 待解决
谁知道如何创建一个线程
176浏览 • 1回复 待解决
使用自定义函数创建一个UI组
114浏览 • 1回复 待解决
在MongoDB中如何创建一个新的数据库?
3665浏览 • 1回复 待解决
如何在自定义函数中创建一个UI组件
1556浏览 • 1回复 待解决
如何展示一个插屏广告
134浏览 • 1回复 待解决
如何展示一个激励广告
120浏览 • 1回复 待解决
如何随机生成一个汉字?
124浏览 • 1回复 待解决
如何设置一个通知按钮
127浏览 • 1回复 待解决
如何展示一个开屏广告
155浏览 • 1回复 待解决
如何展示一个banner广告
144浏览 • 1回复 待解决
如何实现一个折叠组件
650浏览 • 1回复 待解决
如何展示一个原生广告
120浏览 • 1回复 待解决