使用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%') 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.

总结:

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

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

分享
微博
QQ
微信
回复
2024-05-27 17:05:39


相关问题
Harmony next 子窗口实现dialog的效果
286浏览 • 0回复 待解决
HarmonyOS桌面小窗口实现方案
1423浏览 • 1回复 待解决
基于子窗口实现应用内悬浮窗
1258浏览 • 1回复 待解决
如何用WebView创建窗口
1356浏览 • 1回复 待解决
HarmonyOS 创建窗口后相关问题
509浏览 • 1回复 待解决
如何创建Toast窗口,你知道吗?
2751浏览 • 1回复 待解决
arkTS无法创建窗口有了解的吗?
2966浏览 • 0回复 待解决
电脑端窗口预关闭实现
1242浏览 • 1回复 待解决
使用onBackPress对子窗口进行销毁
1836浏览 • 1回复 待解决
禁用窗口的全屏显示功能如何实现
925浏览 • 1回复 待解决