HarmonyOS 鸿蒙Next开发案例 | 沉浸式界面实现方式之三:隐藏状态栏/导航栏方式

发布于 1周前 作者 vueper 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next开发案例 | 沉浸式界面实现方式之三:隐藏状态栏/导航栏方式

场景说明

沉浸式界面通常是指全屏显示,即当前画面占据整个屏幕。画面放大的同时,让用户摆脱无关信息的干扰,带给用户沉浸式的体验。常见的场景有:视频播放、游戏等。本例即为大家介绍如何沟通隐藏状态栏/导航栏开发沉浸式界面。

效果呈现

本例中的沉浸式界面对应效果如下:

运行环境

本例基于以下环境开发,开发者也可以基于其他适配的版本进行开发:

  • IDE: DevEco Studio 3.1.1 Release
  • SDK: 3.1.0(API 9)

实现思路

使用setWindowSystemBarEnable设置导航栏和状态栏为隐藏状态。

说明: 沉浸式的设置最好放在ability的onWindowStageCreate的生命周期里,此时刚好可以获取窗口的信息,放在页面页面生命周期里会出现窗口大小不一致,影响体验。

开发步骤

隐藏状态栏、导航栏可以达到完全沉浸的效果,使用setWindowSystemBarEnable接口即可实现。

具体代码如下:

import window from '@ohos.window';
import common from '@ohos.app.ability.common';

@Entry @Component struct Type3 { @State message: string = ‘Hello World’ context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext async setSystemBar() { let windowClass = await window.getLastWindow(context) //设置导航栏,状态栏不可见 await windowClass.setWindowSystemBarEnable([]) }

aboutToAppear() { this.setSystemBar() }

build() { Row() { Column() { Text(this.message) .fontSize(50) .fontWeight(FontWeight.Bold) } .width(‘100%’) } .backgroundColor("#ffee33") .height(‘100%’) } }

3 回复
怎么设置只隐藏导航栏,不隐藏状态栏呢?

windowClass.setWindowSystemBarEnable([‘status’])

针对您提出的“HarmonyOS 鸿蒙Next开发案例 | 沉浸式界面实现方式之三:隐藏状态栏/导航栏方式”的问题,以下为实现该功能的专业解答:

在HarmonyOS鸿蒙Next开发中,实现沉浸式界面的一种有效方式是隐藏状态栏和导航栏。这通常通过调用系统提供的API来完成。具体步骤如下:

  1. 获取窗口对象:首先,需要获取当前应用的窗口对象,这可以通过调用window.getLastWindow(context)实现。
  2. 设置隐藏状态栏和导航栏:接着,使用setWindowSystemBarEnable([])方法将状态栏和导航栏设置为隐藏状态。此方法接受一个数组参数,若传入空数组则表示隐藏所有系统栏。
  3. 生命周期管理:建议在abilityonWindowStageCreate生命周期中设置沉浸式界面,因为此时可以获取到窗口的完整信息,从而确保沉浸式效果的一致性。

通过以上步骤,即可在HarmonyOS鸿蒙Next应用中实现隐藏状态栏和导航栏的沉浸式界面。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部