Android 隐藏虚拟导航栏
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
禁止下拉通知栏
if (disable) {
mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND);
} else {
mStatusBarManager.disable(StatusBarManager.DISABLE_NONE);
}
隐藏导航栏时 禁止上滑出导航栏
frameworks / base/services/core/java/com/android/server/wm/DisplayPolicy.java
@Override
public void onSwipeFromBottom() {
synchronized (mLock) {
if (mNavigationBar != null
&& mNavigationBarPosition == NAV_BAR_BOTTOM) {
/* add for factorymode test begin */
if (getTestStatus()) { ////判断条件
Slog.i(TAG, "onSwipeFromBottom Test, not requestTransientBars");
return;
}
/* add for factorymode test end */
requestTransientBars(mNavigationBar);
}
}
}
禁止下拉栏也可以这样改
@Override
public void onSwipeFromTop() {
synchronized (mLock) {
if (mStatusBar != null) {
/* add for factorymode test begin */
if (getTestStatus()) {////判断条件
Slog.i(TAG, "onSwipeFromTop Test, not requestTransientBars");
return;
}
/* add for factorymode test end */
requestTransientBars(mStatusBar);
}
}
}
SystemUI setSystemUiVisibility参数属性[ANSWER]
View.SYSTEM_UI_FLAG_FULLSCREEN
全屏模式,占据整个屏幕,隐藏状态栏等界面,但是导航栏不会隐藏。如果用户进行操作,隐藏的系统界面会立马出现并清除该flag。
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
隐藏导航栏,布局会往下移。如果用户进行操作,导航栏会立马出现并清除该flag。
View.SYSTEM_UI_FLAG_IMMERSIVE
沉浸模式。修饰SYSTEM_UI_FLAG_HIDE_NAVIGATION,使用户操作不再显示导航栏(但是仍能通过从底部往上滑调出导航栏并清除flag)。单独使用无效。
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
粘性沉浸模式。修饰SYSTEM_UI_FLAG_FULLSCREEN与SYSTEM_UI_FLAG_HIDE_NAVIGATION。用户操作不再清除flag,从边缘滑入可以调出状态栏和导航栏,并且过几秒之后自动隐藏。单独使用无效。
View. SYSTEM_UI_FLAG_LOW_PROFILE
低配模式,设置后,系统状态栏的信号等图标消失,重要图标颜色变浅(如电量图标)。
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
加入SYSTEM_UI_FLAG_LAYOUT_STABLE后,SystemUI发生变化也不会影响用户布局,单独使用该FLAG界面不会有任何变化。
View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
状态栏的图标以深色绘制。设置了这个属性,状态栏会以与状态栏背景颜色兼容的模式绘制。
View.SYSTEM_UI_FLAG_VISIBLE
用户表示状态栏可见,默认flag