HarmonyOS 鸿蒙Next如何设置应用内悬浮窗,通过创建子窗口方式,但子窗口加载的页面都是空白
HarmonyOS 鸿蒙Next如何设置应用内悬浮窗,通过创建子窗口方式,但子窗口加载的页面都是空白
通过windowStage.createSubWindow的方式创建子窗口,然后通过windowClass.setUIContent或者windowClass.loadContentByName加载页面,都是只能显示空白。请问是否有完整的demo来实现应用内悬浮窗的功能
3 回复
看下此demo是否满足:
//FloatWindow.ets
// 引入window类
import window from '[@ohos](/user/ohos).window';
import { BusinessError } from '[@ohos](/user/ohos).base';
import router from '[@ohos](/user/ohos).router';
[@Entry](/user/Entry)
[@Component](/user/Component)
struct FloatWindow {
// 定义windowClass变量,用来接收创建的悬浮窗
// 自定义创建悬浮窗方法
createFloatWindow() {
// 窗口类型设置为window.WindowType.TYPE_FLOAT
let windowStage = AppStorage.get("windowStage") as window.WindowStage;
// let config:window.Configuration = {name: "floatWindow", windowType: window.WindowType.TYPE_FLOAT, ctx: getContext(this)};
// 创建悬浮窗
windowStage.createSubWindow("floatWindow", (err, win) => {
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(win));
// 设置悬浮窗位置
win.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.');
});
// 设置悬浮窗大小
win.resize(700, 200, (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.');
});
// 为悬浮窗加载页面内容,这里可以设置在main_pages.json中配置的页面
win.setUIContent("pages/FloatContent", (err: BusinessError) => {
if (err.code) {
console.error('Failed to load the content. Cause:' + JSON.stringify(err));
return;
}
win.setWindowBackgroundColor("#00000000")
console.info('Succeeded in loading the content.');
// 显示悬浮窗。
win.showWindow((err: BusinessError) => {
if (err.code) {
console.error('Failed to show the window. Cause: ' + JSON.stringify(err));
return;
}
console.info('Succeeded in showing the window.');
});
});
});
}
}
更多关于HarmonyOS 鸿蒙Next如何设置应用内悬浮窗,通过创建子窗口方式,但子窗口加载的页面都是空白的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
上代码,可能是你设置啥的有问题
针对HarmonyOS鸿蒙Next设置应用内悬浮窗,并通过创建子窗口方式加载页面时遇到页面空白的问题,可以尝试以下解决方案:
- 检查网络权限:若加载的是在线页面,需确保应用已添加网络权限
ohos.permission.INTERNET
,且设备处于联网状态。 - 确认资源访问权限:确保
fileAccess
、imageAccess
、onlineImageAccess
等权限已开启,以便加载相关资源。 - 调试HTML页面:若页面代码存在问题,可使用浏览器打开对应页面验证,或参考Devtools工具调试前端页面。
- 检查子窗口设置:确保子窗口创建成功后,正确设置了位置、大小及UI内容。检查
setUIContent
方法是否正确指向了有效的页面路径。 - 更新和测试:根据最新HarmonyOS开发文档,确保使用正确的API和版本。在不同设备和场景下充分测试,优化界面布局和交互逻辑。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。