HarmonyOS鸿蒙Next中状态栏上的电池条颜色与动态隐藏状态栏实现

发布于 1周前 作者 phonegap100 来自 鸿蒙OS

HarmonyOS鸿蒙Next中状态栏上的电池条颜色与动态隐藏状态栏实现

如何使用代码修改状态栏上的电池、时间颜色,如果不能自定义颜色,能手动改白色和黑色也OK

如何动态隐藏状态栏

我的导航栏是深色,但是电池的颜色也是黑色,看不清,想修改状态栏电池的颜色。

想动态隐藏,而不是全局隐藏或显示,场景就是竖屏时显示状态栏,但是 横屏时我需要看大图,隐藏掉状态栏,已经知晓有一个函数可以使用,但是属于全局设置,有没有组件内调用的函数

import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { window } from '@kit.ArkUI';
import { BusinessError } from '@kit.BasicServicesKit';

export default class EntryAbility extends UIAbility {
  onWindowStageCreate(windowStage: window.Window): void {
    windowStage.loadContent('pages/Index', (err, data) => {
      if (err.code) {
        return;
      }
      let windowClass: window.Window = windowStage.getMainWindowSync();

      // 获取应用主窗口 // 1. 设置窗口全屏
      // 2. 设置状态栏和导航条隐藏
      windowClass.setSpecificSystemBarEnabled('status', false).then(() => {
        console.info('Succeeded in setting the status bar to be invisible.');
      }).catch((err: BusinessError) => {
        console.error(`Failed to set the status bar to be invisible. Code is ${err.code}, message is ${err.message}`);
      });
    });
  }
}

更多关于HarmonyOS鸿蒙Next中状态栏上的电池条颜色与动态隐藏状态栏实现的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

可以用堆栈集合等方式对颜色的值进行取值,在需要改变的页面直接调用setWindowSystemBarProperties方法,参考文档地址如下:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5

如果想在组件内隐藏可参照如下(您这边监听横竖屏是否隐藏即可):

import window from '@ohos.window';
import common from '@ohos.app.ability.common';
@Entry
@Component
struct Type3 {
  @State message: string = 'Hello World'
  private windowClass: window.Window | null = null
  context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext
  async setSystemBar() {
    this.windowClass = await window.getLastWindow(getContext(this))
    await this.windowClass.setSpecificSystemBarEnabled('status', false)
    // await windowClass.setWindowSystemBarEnable([])
  }
  aboutToAppear() {
    this.setSystemBar()
  }
  async aboutToDisappear() {
    this.windowClass = await window.getLastWindow(getContext(this))
    await this.windowClass.setSpecificSystemBarEnabled('status', true)
  }
  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .width('100%')
    }
    .height('100%')
  }
}

更多关于HarmonyOS鸿蒙Next中状态栏上的电池条颜色与动态隐藏状态栏实现的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


let widonw = window.findWindow(this.getUIContext().getWindowName())

拿到window后怎么设置都行。但还是全局设置。根据页面的状态设置。然后页面退出的时候,把状态栏再设置回来

项目名称

  • 状态:已完成
  • 类型:Web应用
  • 描述:这是一个用于管理日常任务的应用程序。

成员

  • 张三
  • 李四
  • 王五

技术栈

  • HTML
  • CSS
  • JavaScript

在HarmonyOS(鸿蒙Next)中,状态栏上的电池条颜色可以通过Window类的setStatusBarColor方法进行设置。该方法允许开发者指定状态栏的背景颜色,从而影响电池条的外观。例如,使用Window.setStatusBarColor(Color.RED)可以将状态栏背景设置为红色,间接改变电池条的颜色。

动态隐藏状态栏可以通过Window类的setFlags方法实现。使用WindowManager.LayoutParams.FLAG_FULLSCREEN标志可以将状态栏隐藏。例如,getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)会隐藏状态栏。要恢复显示状态栏,可以清除该标志,使用getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)

这些操作通常在Activity的生命周期方法(如onCreateonResume)中执行,以确保状态栏的显示或隐藏行为符合应用的需求。

在HarmonyOS鸿蒙Next中,状态栏上的电池条颜色可以通过系统主题或自定义样式进行设置。开发者可以在config.json中配置theme属性来定义状态栏和电池条的颜色。同时,动态隐藏状态栏可以通过调用Window类的setStatusBarVisibility方法实现,传入WindowManager.LayoutParams.FLAG_FULLSCREEN参数即可隐藏状态栏。这些操作需在AbilityPage的生命周期方法中执行,以确保界面更新。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!