首页 > 其他分享 >【HarmonyOS】开启沉浸式(全屏)并获取顶部状态栏和底部导航条高度

【HarmonyOS】开启沉浸式(全屏)并获取顶部状态栏和底部导航条高度

时间:2024-09-24 19:23:25浏览次数:9  
标签:沉浸 状态栏 获取 win HarmonyOS window let 全屏 导航条

鸿蒙开启沉浸式(全屏)并获取顶部状态栏和底部导航条高度

1. 获取主窗口

const win = windowStage.getMainWindowSync()

2. 开启沉浸式

win.setWindowLayoutFullScreen(true)

3. 顶部状态栏高度

// 获取状态栏区域
	let area = win.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM)
// 顶部状态栏高度
	let statusBarHeight = px2vp(area.topRect.height) //这个的单位是px  将单位转换为VP,这个方法是px转vp

4. 获取到导航条区域的高度

 // 获取导航条区域
    let avoidArea = win.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR);
// 获取到导航条区域的高度
    let indicatorHeight = px2vp(avoidArea.bottomRect.height);

5. 全局状态存储

// 将获取到的高度存储到AppStorage,让每个tab页面都能拿到这个值
    PersistentStorage.persistProp('topHeight', statusBarHeight)
    PersistentStorage.persistProp('bottomHeight', indicatorHeight)

完整代码

   export class windowManager {
   static fullScreen(windowStage: window.WindowStage) {
    const win = windowStage.getMainWindowSync()
    // 开启沉浸式模式
    win.setWindowLayoutFullScreen(true)
    // 获取设备的安全高度
    let area = win.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM)
    // 顶部状态栏高度
    let statusBarHeight = px2vp(area.topRect.height) // 将单位转换为VP,这个方法是px转vp
    // 获取导航条区域
    let avoidArea = win.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR);
    // 获取到导航条区域的高度
    let indicatorHeight = px2vp(avoidArea.bottomRect.height);
    // console.log("沉浸式= ", statusBarHeight, indicatorHeight)
    // 将获取到的高度存储到AppStorage,让每个tab页面都能拿到这个值
    PersistentStorage.persistProp('topHeight', statusBarHeight)
    PersistentStorage.persistProp('bottomHeight', indicatorHeight)
  }
  }

开启沉浸式

在EntryAbility里开启沉浸式

async onWindowStageCreate(windowStage: window.WindowStage): Promise<void> {
 // Main window is created, set main page for this ability

 windowManager.fullScreen(windowStage); // 开启沉浸式
}

UI页面使用

通过AppStorage.get() 方法直接获取

@Styles
function bottomHeightStyle() {
  .padding({ bottom::Number(AppStorage.get('bottomHeight')) })
}

扩展

如果需要适配小屏和分屏模式 页面布局能够根据设备状态自动调整,则需要动态获取窗口规避区的信息

可以参考【HarmonyOS】开启沉浸式(全屏)并动态获取窗口规避区的信息

标签:沉浸,状态栏,获取,win,HarmonyOS,window,let,全屏,导航条
From: https://blog.csdn.net/m0_51181214/article/details/142378084

相关文章

  • HarmonyOS开发之横竖屏旋转适配
    场景描述在HarmonyOS移动应用开发中,横竖屏旋转适配成为了一个不可或缺的功能点。特别是在HarmonyOSNEXT平台,开发者面临着更加多样化的设备和更复杂的用户交互需求。以下是我们在项目中遇到的一些关于横竖屏旋转的高频问题及解决方案:如何通过传感器自己感知方向并设置旋转:在不考虑......
  • 华为HarmonyOS地图服务 11 - 如何在地图上增加点注释?
    场景介绍本章节将向您介绍如何在地图的指定位置添加点注释以标识位置、商家、建筑等,并可以通过信息窗口展示详细信息。点注释支持功能:支持设置图标、文字、碰撞规则等。支持添加点击事件。PointAnnotation有默认风格,同时也支持自定义。由于内容丰富,以下只展示一些基础功能......
  • HarmonyOS与OpenHarmony的区别
    HarmonyOS所有权:HarmonyOS是由华为公司开发的操作系统。目标市场:HarmonyOS主要面向中国市场及其用户,用于华为的智能手机、平板电脑、智能手表、电视等多种智能设备。兼容性:HarmonyOS在早期版本中支持运行Android应用,但随着时间的发展,它逐渐转向了自己的应用生态系统。专......
  • HarmonyOs DevEco Studio小技巧17 -- 如何设置主题
    系统自带的主题不喜欢,然后自己又不想一个个去设置怎么办?机缘巧合之下,我发现了IntelliJ的IDE的主题也能在DevEcoStudio上用 这里是下载主题的网址ThemesforIntelliJ-basedIDEs|JetBrainsMarketplace这里下载分两种情况 虽然不兼容但是可以用  下载完......
  • HarmonyOs DevEco Studio小技巧19 --函数表达式与箭头函数
    在JavaScript中,函数表达式和箭头函数是定义函数的两种常见方式。函数表达式:函数表达式是将一个函数赋值给一个变量的方式函数表达式的一般形式是:letfunctionName=function([parameters]){//函数体[returnstatement]};简单的函数表达式的示例letadd=fun......
  • HarmonyOs DevEco Studio小技巧18--JavaScript 变量声明与作用域
    在JavaScript中,变量声明和作用域是非常重要的概念。变量声明:var:使用 var 声明的变量,其作用域在函数内,如果在函数外声明,则为全局变量。存在变量提升现象,即在变量声明之前使用该变量不会报错,但值为 undefined。functionexample(){console.log(a);//undefine......
  • HarmonyOS开发之获取视频缩略图
    在HarmonyOS多媒体应用开发中,视频缩略图的生成是一项常见的需求,尤其是在相册应用、视频播放器等场景中。HarmonyOSNEXT提供了丰富的API来帮助开发者轻松实现这一功能。本文将介绍如何使用getThumbnail和AVImageGenerator接口从原始媒体资源中获取视频指定时间的缩略图。场......
  • 关于HarmonyOS的学习
    day34一、设计模式   +设计模式是一些对解决问题的总结和经验,设计模式是解决某个问题的最佳的方案,无数人优秀人的程序员的实验和错误总结   +共23种1.工厂模式     =>对于批量创建对象的一种解决方案     =>函数可以传递参数......
  • HarmonyOS开发之RichEditor组件实现评论编辑功能
    随着社交媒体和即时通讯应用的普及,用户对于内容创作的需求日益增长,特别是对于评论、回复等互动形式。为了满足这一需求,HarmonyOSNEXT提供了强大的RichEditor组件,支持图文混排和文本交互式编辑,使得开发者可以轻松构建功能丰富的编辑界面。本文将通过几个具体场景,详细介绍如何利用Ri......
  • 鸿蒙(HarmonyOS)--函数、类的声明和使用
    目录1.函数1.1函数的声明1.2可选参数 1.2.1 参数名?:类型  1.2.2参数名:类型=值 1.3Rest参数 1.4返回类型1.4.1显示返回1.4.2隐示返回1.4.3无返回类型1.5函数的作用域1.5.1全局作用域1.5.2局部作用域1.6函数调用1.7函数类型 1.8 箭头函数/l......