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_FULLSCREENSYSTEM_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

你可能感兴趣的:(android,java,apache)