写点什么

详解鸿蒙 Next 仓颉开发语言中的全屏模式

作者:幽蓝计划
  • 2025-06-19
    山东
  • 本文字数:904 字

    阅读完需:约 3 分钟

大家好,今天跟大家分享一下仓颉开发语言中的全屏模式。


和 ArkTS 一样,仓颉的新建项目默认是非全屏模式的,如果你的应用颜色比较丰富,就会发现屏幕上方和底部的留白,这是应用自动避让了屏幕上方摄像头区域和底部的导航条区域。



但是通常我们不需要这些留白,而是希望应用占满整个屏幕,这时候需要用到沉浸模式,下面为大家分享具体的实现过程。


首先,来到应用的 main_ability.cj 文件的 onWindowStageCreate 方法下,设置全屏模式我们要先获取到主窗口,然后设置全屏,实现代码如下:


windowStage.getMainWindow().setWindowLayoutFullScreen(true)
复制代码


这时候运行程序,你会发现屏幕已经被应用占满了。但是新的问题出现了,你不让系统自动避让的话,就要自己避让上下方的摄像头和导航条区域。


要避让这些区域,首先要知道它们的尺寸,主要是高度。还是在刚才的方法中,获取顶部避让区域的方法如下:


let topArea = windowStage.getMainWindow().getWindowAvoidArea(AvoidAreaType.TYPE_SYSTEM)let topAreaHeight = topArea.topRect.height
复制代码


topAreaHeight 就是顶部避让区域的高度尺寸,底部避让区域的获取方式稍有不同,需要单独获取:


let bottomArea = windowStage.getMainWindow().getWindowAvoidArea(AvoidAreaType.TYPE_NAVIGATION_INDICATOR)let bottomAreaHeight = bottomArea.bottomRect.height
复制代码


然后你可以将 topAreaHeight 和 bottomAreaHeight 保存,在应用其他地方获取使用:


AppStorage.setOrCreate('topHeight',topAreaHeight.toString())AppStorage.setOrCreate('bottomHeight',bottomAreaHeight.toString())
复制代码


这里大家尽量保存字符串类型,因为幽蓝君在使用 Int64 类型的时候遇到了问题。


这样的话就会得到一个占满屏幕又不被遮挡的应用。



另外,有些情况下大家可能会需要用到屏幕的尺寸,获取屏幕尺寸的方法如下:


let windowRect =  windowStage.getMainWindow().getWindowProperties().windowRectAppLog.info('屏幕宽度:'+ windowRect.width.toString())AppLog.info('屏幕高度:'+ windowRect.height.toString())
复制代码


最后要注意,以上代码获取到的尺寸单位都是 px,大家使用的时候要按需转换。


今天的内容就是这些,感谢阅读。##HarmonyOS 语言 ##仓颉 ##购物 #

用户头像

幽蓝计划

关注

还未添加个人签名 2025-05-09 加入

还未添加个人简介

评论

发布
暂无评论
详解鸿蒙Next仓颉开发语言中的全屏模式_幽蓝计划_InfoQ写作社区