进度对话的Android 4.4全屏模式

时间:2013-11-27 14:19:54

标签: android android-progressbar android-4.4-kitkat

我希望我的应用在运行Android 4.4的设备上以全屏模式运行。

我为我的视图设置了View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION,它以全屏模式运行。

问题出在我显示ProgressDialog时。然后应用程序退出全屏模式,底部的导航按钮显示为agin。

当显示进度对话框时,应用程序是否可以保持全屏模式?

1 个答案:

答案 0 :(得分:3)

我在这个主题上找到了一些解决方法:How to maintain the Immersive Mode in Dialogs?感谢Beaver6813的答案(这是GitHub上的示例代码项目)。

基本上,我在ProgressDialog上使用此解决方案的做法是:

  • 将两个变量添加到我的MainActivity类:

    private ProgressDialog pDialog;    
    private Activity context;
    
  • 在我的onCreate方法中添加以下代码:

    context = this;    
    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 // hide nav bar   
        | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar    
        | View.SYSTEM_UI_FLAG_IMMERSIVE);
    
  • 在我启动ProgressDialog方法的地方添加以下代码:

    pDialog = new ProgressDialog(context);    
    pDialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);    
    pDialog.show();    
    pDialog.getWindow().getDecorView().setSystemUiVisibility(
        context.getWindow().getDecorView().getSystemUiVisibility());    
    pDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);    
    

这应该可以做到!