Android中的全屏沉浸模式

3

我已经在onResume中为我的Android应用程序设置了全屏沉浸模式,代码如下:

    @Override
    public void onResume() {
    super.onResume();  
    final 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);
     decorView.setOnSystemUiVisibilityChangeListener
            (new View.OnSystemUiVisibilityChangeListener() {
                @Override
                public void onSystemUiVisibilityChange(int visibility) { 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);

                }
            });
      }
OnSystemUiVisibilityChangeListener()也被实现为立即隐藏栏,以防用户执行向内滑动操作。由于该应用程序将在展示设备上运行,因此重要的是确保用户无法访问主页/返回或任何系统信息。
上述方法可以正常工作,但当显示DialogFragment时,系统和导航栏会变得可见,直到对话框消失。如何确保栏始终保持隐藏,无论发生什么情况。此外,是否有更好的方法来处理全屏模式,并完全禁用访问系统、导航、操作、应用程序栏。
编辑: 我已经通过在我的对话框类中使用以下代码来隐藏对话框中的栏:
@Override
public void onStart() {
    super.onStart();
    Window window = getDialog().getWindow();
    window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    int uiOptions = 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;
    window.getDecorView().setSystemUiVisibility(uiOptions);
}

但是在滑出视图之前,有一个短暂的时间段,视图条会变得可见。如何使视图条完全不显示。


尝试这个解决方案。希望它能够起作用。https://dev59.com/EI_ea4cB1Zd3GeqPOHD7#32925108 - waqas ali
2个回答

2

那个怎么样?

 requestWindowFeature(Window.FEATURE_NO_TITLE);
 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
 WindowManager.LayoutParams.FLAG_FULLSCREEN);

1

在您的onClick方法中使用以下代码:

dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE); dialog.show();

    //Set the dialog to immersive
    dialog.getWindow().getDecorView().setSystemUiVisibility(
            MyActivity.this.getWindow().getDecorView().getSystemUiVisibility());

    //Clear the not focusable flag from the window
    dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接