📢 重磅福利!参与活动赢好礼,8月1日-12月31日等你来!
点击链接: 华为开发者学堂

场景介绍

底部弹窗固定显示是汽车类应用的典型场景之一,如应用页面底部的通知弹窗,可及时向用户推送各种信息。

本示例基于@ohos.window实现在页面底部固定一个通知窗口,支持在所有页面显示,支持点击关闭窗口。

实现思路

调用createSubWindow创建子窗口,并依次设置子窗口加载页、子窗口右下坐标、子窗口大小和子窗口展示。
在应用各页面按需加载子窗口。

OpenSubWindows() {
  this.context.windowStage.createSubWindow('FloatPage', (err, windowClass) => {
    if (err.code > 0) {
      return;
    }
    this.win = windowClass;
    try {
      // 设置子窗口加载页
      windowClass.setUIContent('pages/FloatPage', () => {
        windowClass.setWindowBackgroundColor(Constants.SUBWINDOW_BACKGROUND_COLOR);
      });
      // 设置子窗口左上角坐标
      windowClass.moveWindowTo(Constants.ZERO, Constants.SUB_WINDOW_Y);
      // 设置子窗口大小
      windowClass.resize(display.getDefaultDisplaySync().width, Constants.SUB_WINDOW_HEIGHT);
      // 展示子窗口
      windowClass.showWindow();
    } catch (err) {
    }
  })
}
在需要关闭时销毁子窗口。
CloseSubWindows() {
   // 销毁子窗口
   this.win?.destroyWindow();
}

约束与限制

本示例支持API Version 17 Release及以上版本。
本示例支持HarmonyOS 5.0.5 Release SDK及以上版本。
本示例需要使用DevEco Studio 5.0.5 Release及以上版本进行编译运行。
工程目录

├──entry/src/main/ets                        // 代码区
│  ├──common
│  │  └──Constants.ets                       // 常量文件
│  ├──entryability
│  │  └──EntryAbility.ets
│  ├──entrybackupability
│  │  └──EntryBackAbility.ets
│  ├──pages
│  │  ├──BuyingCarPage.ets                   // 选车页  
│  │  ├──FloatPage.ets                       // 漂浮页  
│  │  ├──MainPage.ets                        // 首页  
│  │  └──MinePage.ets                        // 我的页面   
│  └──utils 
│     └──GlobalComponents.ets                // 全局组件类      
└──entry/src/main/resources                  // 应用资源目录
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐