对于系统级别弹窗,仍然需要权限,但也不至于那么麻烦的适配。
对于应用内全局弹出,鸿蒙提供了 应用子窗口 可以直接实现。
本文着重介绍如何利用应用子窗口实现应用内全局悬浮窗。
创建应用子窗口需要先拿到窗口管理器 WindowStage 对象,在 EntryAbility.onWindowStageCreate()
回调中取。
FloatManager.init(windowStage)
init(windowStage: window.WindowStage) {
this.windowStage_ = windowStage
}
然后通过 WindowStage.createSubWindow()
创建子窗口。
// 创建子窗口
showSubWindow() {
if (this.windowStage_ == null) {
Log.error(TAG, ‘Failed to create the subwindow. Cause: windowStage_ is null’);
} else {
this.windowStage_.createSubWindow(“HarmonyWorld”, (err: BusinessError, data) => {
…
this.sub_windowClass = data;
// 子窗口创建成功后,设置子窗口的位置、大小及相关属性等
// moveWindowTo 和 resize 都可以重复调用,实现拖拽效果
this.sub_windowClass.moveWindowTo(this.locationX, this.locationY, (err: Business