Android 隐藏虚拟导航栏,禁止下拉通知栏,禁止上滑出虚拟导航栏

Android 隐藏虚拟导航栏,禁止下拉通知栏,禁止上滑出虚拟导航栏

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