沉浸式模式

沉浸式模式主要是让用户在使用APP使不会被安卓系统所带的控件影响,例如顶部状态栏、ActionBar和部分手机拥有的地步NavigationBar,以下依次讲解如何隐藏各个控件。

  • 隐藏顶部状态栏或底部导航栏
    其中最重要的是View.SYSTEM_UI_FLAG_XX,XX的不同代表了模式的不同,使用 | 进行各个模式下的兼容。

      View decorView = getWindow().getDecorView();
      int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN //隐藏并使应用内容占用顶部状态栏
      	| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION //隐藏并使应用内容占用系统导航栏
      	| View.SYSTEM_UI_FLAG_LAYOUT_STABLE; //需和FULLSCREEN或HIDE_NAVIGATION共用,使上下边缘渐变
      decorView.setSystemUiVisibility(option);
      
      if (Build.VERSION.SDK_INT >= 21) {
      	getWindow().setNavigationBarColor(Color.TRANSPARENT);//导航栏设为透明
      	getWindow().setStatusBarColor(Color.TRANSPARENT);//状态栏设为透明
      }
    
  • 隐藏ActionBar

      //不能使用context.getActionBar(),因为FragmentActivity不支持getActionBar方法
      ActionBar actionBar = context.getSupportActionBar();
      actionBar.hide();
    
  • 完全沉浸式模式
    像一些特殊的模块和应用需要用到完全沉浸式模式,比如游戏和视频播放,因此需要完全隐藏状态栏和导航栏,只有从顶部下拉才能让状态栏显示出来,为了让效果更好,可以在Mainfests中Activity的screenOrientation设为landscape;

      @Override
      public void onWindowFocusChanged(boolean hasFocus) {
      	super.onWindowFocusChanged(hasFocus);
      	if (hasFocus && Build.VERSION.SDK_INT >= 19) {
      		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_STICKY);
      	}
      }
    

你可能感兴趣的:(Android-UI)