导航栏和状态栏配置¶
本章节介绍如何隐藏或显示 Android 系统导航栏和状态栏。
命令行¶
通过 ADB 命令临时隐藏或显示状态栏和导航栏,重启设备后恢复为默认状态。
Rockchip Series / T527¶
# 隐藏状态栏
adb shell am broadcast -a android.intent.action.HIDE_STATUSBAR_BAR
# 显示状态栏
adb shell am broadcast -a android.intent.action.SHOW_STATUSBAR_BAR
# 隐藏导航栏
adb shell am broadcast -a android.intent.action.HIDE_NAVIGATION_BAR
# 显示导航栏
adb shell am broadcast -a android.intent.action.SHOW_NAVIGATION_BAR
A133¶
通过系统属性设置,重启设备后生效:
A733¶
通过全局设置控制,设置后立即生效,无需重启设备:
# 隐藏状态栏
adb shell settings put global status_bar_enabled 0
# 显示状态栏
adb shell settings put global status_bar_enabled 1
# 隐藏导航栏
adb shell settings put global navigation_bar_enabled 0
# 显示导航栏
adb shell settings put global navigation_bar_enabled 1
APP 例程¶
从网盘中获取状态栏和导航栏测试 APP 例程。
SDK 源码修改¶
通过修改 SystemUI 源码实现默认隐藏或禁用状态栏和导航栏。
默认隐藏状态栏¶
修改 CentralSurfacesImpl.java,调用 hideStatusBar() 方法:
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
@@ -952,6 +952,8 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
mRegisterStatusBarResult = result;
createAndAddWindows(result);
+ hideStatusBar();
if (mWallpaperSupported) {
// Make sure we always have the most current wallpaper info.
默认禁止状态栏下拉¶
修改 CommandQueue.java,使 panelsEnabled() 方法返回 false:
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
@@ -536,10 +536,12 @@ public class CommandQueue extends IStatusBar.Stub implements
// TODO(b/118592525): add multi-display support if needed.
public boolean panelsEnabled() {
- final int disabled1 = getDisabled1(mDisplayTracker.getDefaultDisplayId());
- final int disabled2 = getDisabled2(mDisplayTracker.getDefaultDisplayId());
- return (disabled1 & StatusBarManager.DISABLE_EXPAND) == 0
- && (disabled2 & StatusBarManager.DISABLE2_NOTIFICATION_SHADE) == 0;
+ return false;
+ // final int disabled1 = getDisabled1(mDisplayTracker.getDefaultDisplayId());
+ // final int disabled2 = getDisabled2(mDisplayTracker.getDefaultDisplayId());
+ // return (disabled1 & StatusBarManager.DISABLE_EXPAND) == 0
+ // && (disabled2 & StatusBarManager.DISABLE2_NOTIFICATION_SHADE) == 0;
+
}
默认隐藏导航栏¶
修改 CentralSurfacesImpl.java,调用 hideNavigation() 方法:
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
@@ -952,6 +952,8 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
mRegisterStatusBarResult = result;
createAndAddWindows(result);
+ hideNavigation();
if (mWallpaperSupported) {
// Make sure we always have the most current wallpaper info.
Overlay 配置¶
通过修改 overlay 配置文件实现开机默认状态。
默认手势导航¶
RK 平台修改 config.xml 中的 config_navBarInteractionMode 启用手势导航:
--- a/device/rockchip/rk356x/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/device/rockchip/rk356x/overlay/frameworks/base/core/res/res/values/config.xml
@@ -61,7 +61,7 @@
0: 3 button mode (back, home, overview buttons)
1: 2 button mode (back, home buttons + swipe up for overview)
2: gestures only for back, home and overview -->
- <integer name="config_navBarInteractionMode">0</integer>
+ <integer name="config_navBarInteractionMode">2</integer>
<bool name="config_swipe_up_gesture_setting_available">true</bool>
</resources>
默认隐藏状态栏 / 导航栏¶
A733 / T527 修改 SettingsProvider 的 overlay 配置文件,使状态栏和导航栏在开机后默认隐藏:
--- a/.../SettingsProvider/res/values/defaults.xml
+++ b/.../SettingsProvider/res/values/defaults.xml
+
+ <bool name="def_navigation_bar_enabled">false</bool>
+ <bool name="def_status_bar_enabled">false</bool>
| 型号 | Overlay 路径 |
|---|---|
| K9 | device/softwinner/saturn/t527-demo/overlay/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml |
| K10B | device/softwinner/jupiter/a733-demo-aiot/overlay/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml |