1

youtube当视频处于全屏模式时,我想隐藏和显示软键(主页、返回、菜单) 。我正在使用下面的代码。

getWindow().getDecorView().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);

但它不像youtube,它扰乱了隐藏和显示的整个视图。

我知道,我错过了一些东西。但我不知道我错过了什么......

4

2 回答 2

0

您想要的只是沉浸式模式。在您的活动中尝试以下代码。

@Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus) {
            getWindow().getDecorView().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);
        }
    }
于 2017-10-13T12:59:47.300 回答
0

尝试这个,

   void enableImmersiveMode() {

    ((FrameLayout) mToolbar.getParent()).setFitsSystemWindows(false);

    // True immersive mode is available only for android API 19 and above,
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
        mDecorView.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 // hide nav bar
                        | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

    }

更新:禁用沉浸模式应该是这样的,

private void disableImmersiveMode() {

    ((FrameLayout) mToolbar.getParent()).setFitsSystemWindows(true);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        mDecorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    }

这样,您应该只看到第一次调用 enableImmersiveMode() 的混蛋。

于 2016-07-12T10:53:27.203 回答