【鸿蒙应用开发】沉浸式显示(全屏显示)和状态栏文字颜色设置

目录

一、沉浸式显示是什么?

二、使用步骤

1.获取当前应用内最上层的子窗口

2.开启沉浸式显示

3.调整状态栏文字

4.将方法封装为WindowManage类的静态方法,方便后续调用

总结

一、沉浸式显示是什么?

典型应用全屏窗口UI包括状态栏,应用界面和底部导航条,其中状态栏和导航条在沉浸式布局下称为避让区;避让区之外的区域称为安全区。开发应用沉浸式显示效果主要通过调整状态栏、应用界面和导航条的显示效果来减少状态栏导航条等系统界面的突兀感,获得最佳的UI体验。

二、使用步骤

1.获取当前应用内最上层的子窗口

代码如下(示例):

import { window } from '@kit.ArkUI'

//获取当前的上下文对象
const ctx = getContext()
//使用window对象的getLastWindow方法获取当前应用内最上层的子窗口
const win = await window.getLastWindow(ctx)

2.开启沉浸式显示

代码如下(示例):

    //开启沉浸式显示,setWindowLayoutFullScreen方法中传入true即是开启,反之则是关闭
    win.setWindowLayoutFullScreen(true)
    //获取安全区域,并将顶部状态栏的高度持久化存储,后续布局可以使用padding或者组件根据高度占位防止页面内容显示到状态栏(底部导航栏高度同理)
    const top = win.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM)
    AppStorage.setOrCreate('topHeight', px2vp(top.topRect.height))

3.调整状态栏文字

    //获取当前的上下文对象
    const ctx = getContext()
    //获取应用内最上层的子窗口
    const win = await window.getLastWindow(ctx)
    //调用方法设置状态栏的颜色为白色
    win.setWindowSystemBarProperties({
      statusBarContentColor: '#ffffff'
    })

4.将方法封装为WindowManage类的静态方法,方便后续调用

import { window } from '@kit.ArkUI'

export class WindowManage {
  // 开启沉浸式显示模式
  static async enableFullScreen() {
    const ctx = getContext()
    const win = await window.getLastWindow(ctx)
    win.setWindowLayoutFullScreen(true)
    const top = win.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM)
    AppStorage.setOrCreate('topHeight', px2vp(top.topRect.height))
    AppStorage.setOrCreate('bottomHeight', px2vp(top.bottomRect.height))
  }

  // 关闭沉浸式显示模式
  static async disableFullScreen() {
    const ctx = getContext()
    const win = await window.getLastWindow(ctx)
    win.setWindowLayoutFullScreen(false)
    AppStorage.setOrCreate('topHeight', 0)
    AppStorage.setOrCreate('bottomHeight', 0)
  }

  // 设置状态栏文字颜色为白色
  static async setStatusBarLight() {
    const ctx = getContext()
    const win = await window.getLastWindow(ctx)
    win.setWindowSystemBarProperties({
      statusBarContentColor: '#ffffff'
    })
  }

  // 设置状态栏文字颜色为黑色
  static async setStatusBarDark() {
    const ctx = getContext()
    const win = await window.getLastWindow(ctx)
    win.setWindowSystemBarProperties({
      statusBarContentColor: '#000000'
    })
  }
}

总结

以上就是关于鸿蒙应用开发中开启应用全屏显示和设置状态栏文字颜色的方法,可以查阅官方文档获取window对象的更多方法。

### HarmonyOS 开发中修改状态栏文本颜色的方法 在鸿蒙开发中,可以通过调整窗口属性来实现状态栏文字颜色的动态变化。以下是具体的技术细节: #### 1. 动态修改状态栏文字颜色 通过 `Window` 对象提供的 API 可以控制状态栏文字颜色。例如,在页面初始化时设置为白色,当页面滚动到一定距离后再切换成黑色。 ```typescript // 获取当前页面的 Window 实例 const window = getContext(this).window; // 设置状态栏文字颜色为深色(适用于浅色背景) function setStatusBarDark() { const systemBarProperty = new SystemBarProperty(); systemBarProperty.lightMode = true; // 启用深色模式 window.setStatusBarSystemUiVisibility(systemBarProperty); } // 设置状态栏文字颜色为亮色(适用于深色背景) function setStatusBarLight() { const systemBarProperty = new SystemBarProperty(); systemBarProperty.lightMode = false; // 关闭深色模式 window.setStatusBarSystemUiVisibility(systemBarProperty); } ``` 上述代码展示了如何利用 `setStatusBarSystemUiVisibility` 方法改变状态栏文字颜色[^2]。 #### 2. 结合页面滚动事件触发颜色变更逻辑 为了实现在页面滑动过程中动态修改状态栏文字颜色的效果,可以监听页面的滚动事件并调用对应的函数更新状态栏配置。 ```typescript @Builder build() { Column({ space: 0 }) { List().scrollToIndex((index, distance) => { if (distance > thresholdValue) { // 定义阈值判断条件 setStatusBarDark(); // 切换至暗色字体 } else { setStatusBarLight(); // 切换回亮色字体 } }) }.height('100%') } ``` 此部分实现了基于用户交互行为的状态栏样式自适应调整功能[^1]。 #### 3. 配置沉浸式体验增强视觉效果一致性 如果希望进一步优化用户体验,则可考虑启用全屏模式或者隐藏导航条等功能选项配合完成整体设计风格统一化处理过程。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值