HarmonyOS 多模块下悬浮窗显示不出来

HarmonyOS  多模块下悬浮窗显示不出来。

HarmonyOS
2024-09-26 13:24:11
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

har包代码:

悬浮窗展示页。

import { window } from '@kit.ArkUI';  
interface Position {  
  x: number,  
  y: number  
}  
@Component  
export struct MainPage {  
  @State message: string = '悬浮窗'  
  private panOption: PanGestureOptions = new PanGestureOptions({ direction: PanDirection.All });  
  @State @Watch("moveWindow") windowPosition: Position = { x: 0, y: 0 };  
  floatWindow: window.Window | null = null;  
  build() {  
    Row() {  
      Text(this.message)  
    }.width('100%').height('100%')  
    .gesture(  
      PanGesture(this.panOption)  
        .onActionStart((event: GestureEvent) => {  
          console.info('Pan start');  
        })  
        .onActionUpdate((event: GestureEvent) => {  
          this.windowPosition.x += event.offsetX;  
          this.windowPosition.y += event.offsetY;  
        })  
        .onActionEnd(() => {  
          console.info('Pan end');  
        })  
    )  
    .border({  
      style: BorderStyle.Dotted  
    })  
    .backgroundColor(Color.Yellow)  
  }  
  moveWindow() {  
    (this.floatWindow as window.Window).moveWindowTo(this.windowPosition.x, this.windowPosition.y);  
  }  
  aboutToAppear() {  
    this.floatWindow = window.findWindow("floatWindow")  
  }  
}

oh-package.json5 导入har包。

"dependencies": {  
  "myhar": 'file:../har'  
}

harPage页面。

import { MainPage } from 'myhar'  
@Entry  
@Component  
struct HarPage {  
  build() {  
    Column(){  
      MainPage()  
    }  
  }  
}

entry:

启动悬浮框。

onWindowStageCreate(windowStage: window.WindowStage): void {  
  // 1.创建悬浮窗。  
  let windowClass: window.Window | null = null;  
  let config: window.Configuration = {  
    name: "floatWindow", windowType: window.WindowType.TYPE_FLOAT, ctx: this.context  
  };  
  window.createWindow(config, (err: BusinessError, data) => {  
  let errCode: number = err.code;  
  if (errCode) {  
    console.error('Failed to create the floatWindow. Cause: ' + JSON.stringify(err));  
    return;  
  }  
  windowClass = data;  
  // 2.悬浮窗窗口创建成功后,设置悬浮窗的位置、大小及相关属性等。  
  windowClass.moveWindowTo(300, 300, (err: BusinessError) => {  
  let errCode: number = err.code;  
  if (errCode) {  
    console.error('Failed to move the window. Cause:' + JSON.stringify(err));  
    return;  
  }  
});  
windowClass.resize(600, 600, (err: BusinessError) => {  
  let errCode: number = err.code;  
  if (errCode) {  
    console.error('Failed to change the window size. Cause:' + JSON.stringify(err));  
    return;  
  }  
});  
// 3.为悬浮窗加载对应的目标页面。  
windowClass.setUIContent("pages/harPage", (err: BusinessError) => {  
  let errCode: number = err.code;  
  if (errCode) {  
    console.error('Failed to load the content. Cause:' + JSON.stringify(err));  
    return;  
  }  
  console.info('Succeeded in loading the content.');  
  // 3.1.显示悬浮窗。  
  (windowClass as window.Window).showWindow((err: BusinessError) => {  
    let errCode: number = err.code;  
    if (errCode) {  
      console.error('Failed to show the window. Cause: ' + JSON.stringify(err));  
      return;  
    }  
  });  
});  
});  
}
分享
微博
QQ
微信
回复
2024-09-26 17:31:28
相关问题
HiLog日志打印不出来?
11187浏览 • 3回复 已解决
开启混淆后,卡片加载不出来
6363浏览 • 1回复 待解决
屏幕右移有时退软件还退不出来
6083浏览 • 1回复 待解决
数据库查找查找不出来什么回事啊?
586浏览 • 1回复 待解决