Android管理系统状态栏和导航栏



淡化系统状态栏

设置系统状态栏为透明,隐藏actionbar,内容不会冲到状态栏之下。
 
    
  1. name="Theme.MainActivity" parent="AppTheme.NoActionBar">
  2. name="windowActionBar">false
  3. name="windowNoTitle">true
  4. name="android:windowTranslucentStatus">true
这时,系统状态栏下的颜色是由应用主题的主色中的colorPrimaryDark决定
 
    
  1. name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
  2. name="colorPrimary">@color/colorPrimary
  3. name="colorPrimaryDark">@color/colorPrimaryDark
  4. name="colorAccent">@color/colorAccent

隐藏系统状态栏

针对Android4.1(API Level 16)之下的版本:
 
    
  1. //隐藏系统状态栏
  2. // If the Android version is lower than Jellybean, use this call to hide
  3. // the status bar.
  4. if (Build.VERSION.SDK_INT < 16) {
  5. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
  6. WindowManager.LayoutParams.FLAG_FULLSCREEN);
  7. }
针对Android4.1(Api Level16)及之上版本:
 
    
  1. //在Android 4.1(API level 16)以及以上的版本中,你可以使用setSystemUiVisibility())来进行动态隐藏
  2. View decorView = getWindow().getDecorView();
  3. // Hide the status bar.
  4. int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
  5. decorView.setSystemUiVisibility(uiOptions);
  6. // Remember that you should never show the action bar if the
  7. // status bar is hidden, so hide that too if necessary.
官方建议同时隐藏掉ActionBar,如果不隐藏ActionBar将突兀的出现在状态栏之下内容之上。
注:跳转到另一个Activity、按下Home键会导致设置的系统UI的标签被清除,系统状态栏会重现显示。点击了ActionBar的menu菜单,状态栏也会重新出现。如果想要避免这种状况,就不要在onCreate() 方法中设置UI标签,而应该在onResume()与onWindowFocusChaned()里设定UI标签。

全屏显示内容:

设置Activity的主题
 
    
  1. <item name="android:windowFullscreen">trueitem>
代码设置的方式:在onCreate()的setContentView()之前调用
 
    
  1. /*全屏*/
  2.        requestWindowFeature(Window.FEATURE_NO_TITLE);//取消标题栏
  3. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
使用非粘性沉浸模式:
 
    
  1. /**
  2. * 非粘性沉浸模式,在不改变内容区域大小的情况下,隐藏与显示状态栏和导航栏。但是状态栏占得位置还在
  3. */
  4. private void unStickyModeFullScreen() {
  5. /*非粘性沉浸模式,在不改变内容区域大小的情况下,隐藏与显示状态栏和导航栏。和上面的效果基本相同,但是同时隐藏了ActionBar*/
  6. View mDecorView = getWindow().getDecorView();
  7. mDecorView.setSystemUiVisibility(
  8. View.SYSTEM_UI_FLAG_LAYOUT_STABLE
  9. | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
  10. | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
  11. | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
  12. | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
  13. | View.SYSTEM_UI_FLAG_IMMERSIVE);
  14. }

指定statusBar的颜色:

在主题中添加,首先设置其颜色不跟随ToolBar(ActionBar),android:windowTranslucentStatus位false时,内容不会冲到statusBar的下面,为true时会占据statusbar的位置。
 
    
  1. <item name="android:windowTranslucentStatus">falseitem>
  2. <item name="android:statusBarColor">@color/black_272a33item>

你可能感兴趣的:(Android心得笔记)