【问题标题】:Full Screen Immersive Mode in AndroidAndroid 中的全屏沉浸式模式
【发布时间】:2016-08-25 10:25:40
【问题描述】:

我在onResume 中为我的安卓应用设置了全屏沉浸模式,如下所示:

    @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);
}

但是在滑出视图之前,有一个短暂的时间条会变得可见。我怎样才能让酒吧根本不显示。

【问题讨论】:

标签: android android-fullscreen android-immersive


【解决方案1】:

那又怎样?

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

【讨论】:

    【解决方案2】:

    在你的 onClick 方法中使用这个...

    dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE); 对话框.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);
    

    【讨论】:

      猜你喜欢
      • 2013-12-23
      • 1970-01-01
      • 1970-01-01
      • 2014-03-07
      • 2014-03-06
      • 2016-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多