使用dialog窗口实现红包雨窗口创建

在应用使用中会出现红包雨,红包雨的实现类似dialog弹窗,如何合理实现红包雨的效果。

场景:判断UI提供的自定义弹窗和window提供dialog那个层级更高。

HarmonyOS
2024-05-26 14:06:17
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
milchcow

使用的核心API

ArkUI-自定义弹窗

Window-创建新窗口

核心代

核心代码解释

在页面中搭建一个自定义弹窗组件和一个window提供的dialog组件进行层级对比。在页面显示5秒后会创建一个window层级的dialog,使用Button可以在dialog窗口创建前后生成自定义弹窗从而测试是否会产生遮挡。

import window from '@ohos.window' 
// ArkUI提供的自定义弹窗 
@CustomDialog 
struct CustomDialogExample { 
  controller: CustomDialogController = new CustomDialogController({  
    builder: CustomDialogExample({}), 
  }) 
   
  build() { 
    Column() { 
      Text('我是内容') 
        .fontSize(20) 
        .margin({ top: 10, bottom: 10 }) 
    } 
  } 
} 
@Entry 
@Component 
struct Page1 { 
  dialogController: CustomDialogController = new CustomDialogController({ 
        builder: CustomDialogExample(), 
  }) 
  @State message: string = 'Hello World' 
  onPageShow() { 
    //定时器。5秒后自动创建一个dialog窗口 
    setTimeout(() => { 
      let dialogConfig: window.Configuration = { 
        name: 'moneyRain', 
        ctx: getContext(this), 
        windowType: window.WindowType.TYPE_DIALOG 
      } 
      window.createWindow(dialogConfig, (err, win) => { 
        win.setWindowTouchable(true); 
        win.resize(800, 2600); 
        win.moveWindowTo(50, 800) 
        win.setUIContent('pages/Page2'); 
        win.showWindow(); 
      }) 
    }, 5000) 
  } 
  build() { 
    Row() { 
      Column() { 
        // 按钮触发自定义弹窗 
        Button('click me') 
          .onClick(() => { 
            this.dialogController.open() 
          }) 
      }.width('100%').margin({ top: 5 }) 
    } 
    .width('100%') 
  } 
}

总结:

无论是自定义弹窗还是dialog窗口都只存在于主窗口上,跟着主窗口一起置于前后台。

dialog窗口在屏幕Y轴上的高度是高于自定义弹窗的,自定义弹窗对dialog窗口无影响。

分享
微博
QQ
微信
回复
2024-05-27 17:05:39
相关问题
如何用WebView创建窗口
389浏览 • 1回复 待解决
电脑端窗口预关闭实现
298浏览 • 1回复 待解决
基于子窗口实现应用内悬浮窗
180浏览 • 1回复 待解决
如何设置窗口启动图片
844浏览 • 1回复 待解决
如何监听窗口大小的变化
871浏览 • 1回复 待解决
如何获取窗口的宽高信息
771浏览 • 1回复 待解决
如何设置窗口的背景色
638浏览 • 1回复 待解决
设置子窗口透明度未生效
628浏览 • 1回复 待解决
求大佬告知如何获取窗口的宽度
665浏览 • 1回复 待解决
如何固定应用窗口大小并居中展示
774浏览 • 1回复 待解决
如何通过命令行查询窗口信息
775浏览 • 1回复 待解决
隐私模式设置后窗口是如何展示的
763浏览 • 1回复 待解决
harmony os demuxer 接口实现开源了嘛 ?
7438浏览 • 1回复 待解决
如何生成一个可以交互的移动子窗口
309浏览 • 1回复 待解决