一、設(shè)置懸浮窗說明
懸浮窗可以在已有的任務(wù)基礎(chǔ)上,創(chuàng)建一個(gè)始終在前臺(tái)顯示的窗口。即使創(chuàng)建懸浮窗的任務(wù)退至后臺(tái),懸浮窗仍然可以在前臺(tái)顯示。通常懸浮窗位于所有應(yīng)用窗口之上;開發(fā)者可以創(chuàng)建懸浮窗,并對(duì)懸浮窗進(jìn)行屬性設(shè)置等操作。
二、開發(fā)步驟
前提條件:創(chuàng)建WindowType.TYPE_FLOAT即懸浮窗類型的窗口,需要申請(qǐng)ohos.permission.SYSTEM_FLOAT_WINDOW權(quán)限。
1.創(chuàng)建懸浮窗。
通過window.createWindow接口創(chuàng)建懸浮窗類型的窗口。
2.對(duì)懸浮窗進(jìn)行屬性設(shè)置等操作。
懸浮窗窗口創(chuàng)建成功后,可以改變其大小、位置等,還可以根據(jù)應(yīng)用需要設(shè)置懸浮窗背景色、亮度等屬性。
3.加載顯示懸浮窗的具體內(nèi)容。
通過setUIContent和showWindow接口加載顯示懸浮窗的具體內(nèi)容。
4.銷毀懸浮窗。
當(dāng)不再需要懸浮窗時(shí),可根據(jù)具體實(shí)現(xiàn)邏輯,使用destroyWindow接口銷毀懸浮窗。
更多鴻蒙開發(fā)技術(shù)已更新↓
import UIAbility from '@ohos.app.ability.UIAbility';
import window from '@ohos.window';
export default class EntryAbility extends UIAbility {
onWindowStageCreate(windowStage) {
// 1.創(chuàng)建懸浮窗。
let windowClass = null;
let config = {name: "floatWindow", windowType: window.WindowType.TYPE_FLOAT, ctx: this.context};
window.createWindow(config, (err, data) = > {
if (err.code) {
console.error('Failed to create the floatWindow. Cause: ' + JSON.stringify(err));
return;
}
console.info('Succeeded in creating the floatWindow. Data: ' + JSON.stringify(data));
windowClass = data;
// 2.懸浮窗窗口創(chuàng)建成功后,設(shè)置懸浮窗的位置、大小及相關(guān)屬性等。
windowClass.moveWindowTo(300, 300, (err) = > {
if (err.code) {
console.error('Failed to move the window. Cause:' + JSON.stringify(err));
return;
}
console.info('Succeeded in moving the window.');
});
windowClass.resize(500, 500, (err) = > {
if (err.code) {
console.error('Failed to change the window size. Cause:' + JSON.stringify(err));
return;
}
console.info('Succeeded in changing the window size.');
});
// 3.為懸浮窗加載對(duì)應(yīng)的目標(biāo)頁面。
windowClass.setUIContent("pages/page4", (err) = > {
if (err.code) {
console.error('Failed to load the content. Cause:' + JSON.stringify(err));
return;
}
console.info('Succeeded in loading the content.');
// 3.顯示懸浮窗。
windowClass.showWindow((err) = > {
if (err.code) {
console.error('Failed to show the window. Cause: ' + JSON.stringify(err));
return;
}
console.info('Succeeded in showing the window.');
});
});
// 4.銷毀懸浮窗。當(dāng)不再需要懸浮窗時(shí),可根據(jù)具體實(shí)現(xiàn)邏輯,使用destroy對(duì)其進(jìn)行銷毀。
windowClass.destroyWindow((err) = > {
if (err.code) {
console.error('Failed to destroy the window. Cause: ' + JSON.stringify(err));
return;
}
console.info('Succeeded in destroying the window.');
});
});
}
};
審核編輯 黃宇
-
模型
+關(guān)注
關(guān)注
1文章
3226瀏覽量
48806 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2339瀏覽量
42805 -
鴻蒙OS
+關(guān)注
關(guān)注
0文章
188瀏覽量
4382
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論