SystemUI 定制:状态栏、导航栏与通知
2026/8/9大约 3 分钟系统定制Android 14SystemUI状态栏定制
SystemUI 定制:状态栏、导航栏与通知
上一章看了 RRO。这一章回答:SystemUI 是什么,状态栏、导航栏、通知面板怎么定制, 哪些用 overlay、哪些要改源码?
SystemUI 定制跨资源与运行逻辑
| 常见误解 | 正确理解 |
|---|---|
| SystemUI 是一个普通系统应用 | 它是特权系统应用,宿主 system_server 之外的独立进程,能力特殊 |
| 界面定制都要改 SystemUI 源码 | 大量外观用 RRO overlay 即可 |
| 状态栏逻辑都在 SystemUI | 部分状态来自系统服务(如电池、信号),SystemUI 只是呈现 |
核心结论
- SystemUI 覆盖状态栏、导航栏、通知面板、快捷设置等系统 UI。
- 外观定制优先 RRO:颜色、图标、尺寸、文案。
- 结构/行为定制要改 SystemUI 源码(布局层级、交互逻辑)。
- 状态数据(电池、信号、通知)来自系统服务,SystemUI 负责呈现。
- 定制边界:先确认“是资源问题还是逻辑问题”。
SystemUI 组成与定制主链
逐步解释:
- 外观:状态栏图标、通知样式等用 overlay。
- 结构:面板布局、交互逻辑改源码。
- 数据:状态数据来自系统服务,SystemUI 只呈现。
典型定制项
| 定制项 | 推荐方式 |
|---|---|
| 状态栏图标颜色/时钟格式 | RRO |
| 通知圆角/间距 | RRO |
| 快捷设置磁贴布局 | 源码或配置 |
| 导航栏按钮行为 | 源码 |
| 通知权限/免打扰逻辑 | 系统服务 |
先按这张表判断方向,能 overlay 的别动源码。
源码证据
阅读目标:确认 SystemUI 的结构入口。
正文指针:packages/SystemUI/ 的源码结构;状态栏与通知面板的资源目录。
packages/SystemUI/
├── res/ # 可 overlay 的资源
└── src/ # 结构逻辑这段代码证明: SystemUI 的资源与代码分离,外观定制可完全落在 res 层; 结构改动才需要动 src。
验证与排障
环境:开发设备或模拟器;以下命令不需要 root。
adb shell cmd overlay list | grep systemui
adb shell dumpsys package com.android.systemui | grep -E "overlay|versionName"
adb shell am force-stop com.android.systemui先确认 overlay 是否覆盖 systemui;重启 SystemUI 验证变化。定制不生效时按 “资源名 → overlay 状态 → 重启”顺序排查。
常见误区
- “SystemUI 就是状态栏”:还包括通知、快捷设置等。
- “界面都要改源码”:外观优先 overlay。
- “SystemUI 自己产生所有状态”:数据来自系统服务。
- “改完不用重启”:SystemUI 需重启才能看到变化。
延伸问题
- SystemUI 插件框架如何扩展状态栏能力?
- 厂商如何给 SystemUI 打 overlay 而不破坏升级?
- 状态栏高度/图标布局如何用 overlay 调整?
- 导航手势与 SystemUI 的关系是什么?
源码入口
| 文件 | 关键位置 | 作用 |
|---|---|---|
packages/SystemUI/res/ | 资源 | 外观定制 |
packages/SystemUI/src/ | 逻辑 | 结构定制 |
| SystemUI 进程 | 宿主 | 系统 UI |
cmd overlay | 命令行 | overlay 管理 |
公共路径:packages/SystemUI/。行号以 r75 检索为准。
无需修改资源时可评估 系统属性与配置。