HarmonyOS PC electron上子窗和悬浮窗如何创建?
相比于常规子窗,悬浮窗是一个始终在前台显示的窗口。即使创建悬浮窗的任务退至后台,悬浮窗仍然可以在前台显示。通常悬浮窗位于所有应用窗口之上,开发者可以创建悬浮窗,并对悬浮窗进行属性设置等操作。子窗有多种用途,如弹出模态对话框,用于显示额外信息/提示,或者广告等。// type的取值是mainWindow,subWindow,floatWindow。// type的取值是mainWindow,subW
·
HarmonyOS PC electron上子窗和悬浮窗如何创建?
在HarmonyOS PC上使用electron框架开发应用,如何创建子窗和悬浮窗?
【背景知识】 子窗分为(1)常规子窗(2)悬浮窗。 子窗有多种用途,如弹出模态对话框,用于显示额外信息/提示,或者广告等。 悬浮窗是HarmonyOS特有的窗口形式,其特点如下:
-
仅在2in1和PC设备上可申请,场景限定为"多人视频通话"和"屏幕共享"。
-
通过申请受限权限申请,审批相对严格。
-
相比于常规子窗,悬浮窗是一个始终在前台显示的窗口。即使创建悬浮窗的任务退至后台,悬浮窗仍然可以在前台显示。通常悬浮窗位于所有应用窗口之上,开发者可以创建悬浮窗,并对悬浮窗进行属性设置等操作。常规子窗不具备以上特性。
【解决方案】
-
创建常规子窗。
// main.js
const { app, BrowserWindow, ipcMain } = require('electron/main');
const { truncate } = require('original-fs');
let win;
const createWindow = () => {
win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
contextIsolation: false
}
})
win.setWindowButtonVisibility(true);
win.loadFile('index.html')
}
app.whenReady().then(() => {
createWindow();
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow();
}
})
})
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
})
ipcMain.on('create-new-window', (event) => {
const newWindow = new BrowserWindow({
windowInfo: {
// type的取值是mainWindow,subWindow,floatWindow
// 创建常规子窗,同时parent应设置为父窗口引用
type: 'subWindow'
},
width: 400,
height: 300,
parent: win,
icon: 'electron_white.png'
});
newWindow.loadFile('sub.html')
});

-
创建悬浮窗。
仅修改创建子窗的参数即可,windowInfo.type修改为floatWindow,样例如下。
const newWindow = new BrowserWindow({
windowInfo: {
// type的取值是mainWindow,subWindow,floatWindow
// 创建floatWindow,同时parent应设置为父窗口引用
type: 'floatWindow'
},
width: 400,
height: 300,
parent: win,
icon: 'electron_white.png'
});

更多推荐


所有评论(0)