HarmonyOS 使用SubWindow 创建的全局Loading框 不是调用时立即出现
使用 SubWindow 创建全局Loading 框, 按道理是会拦截点击掉MainWindow的点击事件的。
但是实际测试的时候发现 调用 window.showWindow() , 窗口并没有立即被展现出来。
证明场景是:我们有一个Button, onClick的时候会 调用 window.showWindow(), 但是如果快速点击Button, 按钮响应了两次点击事件。 第二次的点击并没有被 subWindow 拦截掉。
全局Loading框代码如下:
export class CommonLoadingDialog {
static readonly LOADING_DIALOG_WINDOW_NAME: string = 'sub_window_loading_dialog';
static showLoading(message: string = '加载中...') {
let localStorage = LocalStorage.getShared();
if (!localStorage) {
localStorage = new LocalStorage();
}
localStorage.setOrCreate(CommonLoadingDialog.LOADING_DIALOG_WINDOW_NAME, message);
let mainWindow: window.WindowStage | undefined = WindowHelper.instance().getWindow();
if (mainWindow) {
if (SubWindowManager.getInstance().hasSubWindow(CommonLoadingDialog.LOADING_DIALOG_WINDOW_NAME)) {
CommonLoadingDialog.hideLoading()
}
mainWindow.createSubWindow(CommonLoadingDialog.LOADING_DIALOG_WINDOW_NAME).then(async (window: window.Window) => {
if (window) {
SubWindowManager.getInstance().putSubWindow(CommonLoadingDialog.LOADING_DIALOG_WINDOW_NAME, window);
await window.loadContentByName(EntryUrlConstants.COMMON_LOADING_DIALOG, localStorage);
await window.resize(WindowHelper.instance().getScreenWidth(), WindowHelper.instance().getScreenHeight());
window.setWindowBackgroundColor('#00000000'); // 这里给窗口设置遮罩颜色
Logger.info(`买卖时间 调用show的时间戳 : ${new Date().getTime()}`)
window.showWindow().then(() => {
Logger.info(`买卖时间 show回调的时间戳 : ${new Date().getTime()}`)
});
}
})
}
}
static async hideLoading(): Promise<boolean> {
if (WindowHelper.instance().getWindow()) {
await SubWindowManager.getInstance().closeSubWindow(CommonLoadingDialog.LOADING_DIALOG_WINDOW_NAME);
}
return true;
}
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 有提供全局的loading加载框吗?
333浏览 • 1回复 待解决
HarmonyOS 请问如何实现全局添加loading加载框
422浏览 • 1回复 待解决
HarmonyOS FlowItem onAppear 事件调用时机不是Item出现在页面时
170浏览 • 1回复 待解决
HarmonyOS 全局loading
377浏览 • 1回复 待解决
HarmonyOS 如何在全局使用loading组件?
1150浏览 • 1回复 待解决
HarmonyOS 全局的loading组件
730浏览 • 1回复 待解决
HarmonyOS 怎么实现一个全局随处可以调用的loading?
694浏览 • 1回复 待解决
HarmonyOS 全局loading的实现方案
236浏览 • 1回复 待解决
HarmonyOS 全局loading的菊花如何实现?
820浏览 • 1回复 待解决
HarmonyOS 没有全局的api loading动画
764浏览 • 1回复 待解决
HarmonyOS 网络请求loading框
371浏览 • 1回复 待解决
HarmonyOS 全局loading有什么方案吗
411浏览 • 1回复 待解决
HarmonyOS 是否有全局loading这种控件?
907浏览 • 1回复 待解决
能不能手写一个提示框,通过方法调用的形式展示loading提示框。
793浏览 • 1回复 待解决
HarmonyOS通过方法调用的loading有吗?
803浏览 • 0回复 待解决
HarmonyOS 视频压缩以及请求全局loading
158浏览 • 1回复 待解决
HarmonyOS TextController创建后,立即设置 StyledString不会显示
414浏览 • 1回复 待解决
HarmonyOS 如何实现全局弹框
477浏览 • 1回复 待解决
HarmonyOS 全局扩展,不是页面级别扩展
246浏览 • 1回复 待解决
HarmonyOS 应用级全局弹框
721浏览 • 1回复 待解决
HarmonyOS 全局样式怎么创建?
637浏览 • 1回复 待解决
HarmonyOS 使用PersistentStorage存储持久化时,读取正常,调用时undefined
581浏览 • 1回复 待解决
HarmonyOS 创建全局弹窗的推荐方案
220浏览 • 1回复 待解决
process调用时构建异常
552浏览 • 1回复 待解决
HarmonyOS CustomDialog全局弹框可以在静态库har里面使用吗
296浏览 • 1回复 待解决
参考以下demo:
CommonWindow.ets
index.ets
在EntryAbility中加入: