Android中的全屏沉浸式模式

时间:2016-04-30 07:41:00

标签: android android-fullscreen android-immersive

我在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);
}

但是有一个短暂的时间,在滑出视野之前,条形变得可见。如何让酒吧完全不显示。

2 个答案:

答案 0 :(得分:1)

那怎么样?

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

答案 1 :(得分: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);