一、工具类核心作用
本工具类通过封装鸿蒙窗口管理能力,提供状态栏文字颜色快速切换功能,支持深色(黑色)和浅色(白色)两种模式,适用于需要动态适配不同主题场景的鸿蒙应用开发。
浅色模式

深色模式

二、代码结构解析
javascript
import { CONTEXT } from "../constants";
import { window } from "@kit.ArkUI";
class StatusBar {
// 设置深色模式(黑色文字)
setDarkBar() {
this.setBar({ statusBarContentColor: '#000000' });
}
// 设置浅色模式(白色文字)
setLightBar() {
this.setBar({ statusBarContentColor: '#ffffff' });
}
// 核心设置方法
async setBar(config: window.SystemBarProperties) {
const ctx = AppStorage.get<Context>(CONTEXT);
if (ctx) {
const win = await window.getLastWindow(ctx);
win.setWindowSystemBarProperties(config);
}
}
}
export const statusBar = new StatusBar();
1. 上下文获取
- 通过AppStorage获取全局存储的Context对象
- 需在应用启动时注入上下文(参考EntryAbility初始化):
javascript
// EntryAbility.ets
onWindowStageCreate(windowStage: window.WindowStage) {
AppStorage.setOrCreate(CONTEXT, this.context);
}
2. 窗口对象操作
- 使用window.getLastWindow()获取当前窗口实例
- 调用setWindowSystemBarProperties设置系统栏属性
3. 颜色配置参数
- statusBarContentColor:控制状态栏文字/图标颜色
- 支持HEX、RGB等颜色格式
- 扩展能力:可配置其他系统栏属性(如背景色、透明度)
四、使用示例
less
// 在页面生命周期中调用
@Entry
@Component
struct HomePage {
aboutToAppear() {
// 根据页面背景色动态切换
statusBar.setLightBar(); // 白色文字
// 或
statusBar.setDarkBar(); // 黑色文字
}
build() {
// 页面内容...
}
}
五、注意事项
1. 上下文依赖
- 必须确保CONTEXT在AppStorage中正确初始化
- 建议在EntryAbility的onWindowStageCreate阶段注入
2. 异步处理
- getLastWindow为异步操作,需使用async/await
- 推荐在页面生命周期(如aboutToAppear)调用
3. 颜色适配建议
- 深色模式建议搭配浅色状态栏背景
- 浅色模式建议搭配深色状态栏背景
- 可通过组合设置实现沉浸式状态栏:
php
win.setWindowSystemBarProperties({
statusBarContentColor: '#ffffff',
statusBarColor: '#000000'
});
4. 兼容性说明
- 适用于HarmonyOS 5.0.0+版本
- 需在module.json5配置状态栏可见性:
json
"abilities": [{
"name": "EntryAbility",
"visible": true,
"window": {
"statusBarVisibility": "visible"
}
}]