参考文章1
参考文章2

沉浸式状态栏就是将标题栏颜色与状态栏颜色设置为同一种颜色,Android不同的版本设置沉浸式方法也不大一样.

4.4时设置沉浸式状态栏方法
  1. 代码设置或者主题设置
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

主题设置,在values-v19文件夹下

<style name="MDTheme" parent="Theme.Design.Light.NoActionBar">    "android:windowTranslucentStatus">truestyle>
  1. 这样设置以后,标题栏会上移动与状态栏重合.想要标题栏下移就得往decorView布局容器中加入一个与状态栏宽高一样的View,并且设置这个View背景与标题栏颜色一样,这样一来就能实现沉浸式的状态栏了.
// 伪代码// 1.获取当前Activity的decorView对象, 最开始decorView中有标题栏View和内容栏View,ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();// 2.将创建的View添加到decorView中decorView.addView(myView)// 3.设置不为状态栏留空间// rootView代表自己写的Activity布局解析后的ViewViewGroup rootView = (ViewGroup) ((ViewGroup) activity.findViewById(android.R.id.content)).getChildAt(0);// 忽略用户为childView设置的padding属性,将由系统为该View设置paddingTop属性,高度值为状态栏的高度.ViewCompat.setFitsSystemWindows(rootView,true);// 设置childView不在padding代表的区域中绘制.rootView.setClipToPadding(true);

经过以上两步就能够使状态栏的背景与标题栏颜色一致了.

5.0时设置沉浸式状态栏方法
  1. 用代码的方式设置
// 首先设置状态栏的颜色getWindow().setStatusBarColor(getResources().getColor(android.R.color.read));// 这个标记的意思是绘制一个背景透明的状态栏,然后用StatusBarColor中的颜色去填充,上面一步已经设置了StatusBarColor的颜色getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);// 最后还要清楚清除这个标记getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
  1. 用主题配置的方式设置
    values-v21文件夹下面添加主题
<style name="MDTheme" parent="Theme.Design.Light.NoActionBar">    "android:windowTranslucentStatus">false    "android:windowDrawsSystemBarBackgrounds">true    "android:statusBarColor">@android:color/readstyle>
6.0时设置沉浸式状态栏方法

6.0沉浸式设置的方法和5.0差不多.6.0做了一点优化,就是可以修改状态栏上的字体颜色与图标颜色.

  1. 用代码方式设置
// 首先设置状态栏的颜色getWindow().setStatusBarColor(getResources().getColor(android.R.color.read));// 这个标记的意思是绘制一个背景透明的状态栏,然后用StatusBarColor中的颜色去填充,上面一步已经设置了StatusBarColor的颜色getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);// 最后还要清楚清除这个标记getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);// 设置状态栏上字体颜色和图标颜色为浅黑色的getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
  1. 用主题配置的方式设置
    values-v23文件夹下面添加主题
<style name="MDTheme" parent="Theme.Design.Light.NoActionBar">    "android:windowTranslucentStatus">false    "android:windowDrawsSystemBarBackgrounds">true    "android:statusBarColor">@android:color/holo_red_light        "android:windowLightStatusBar">truestyle>
布局如何延申到状态栏区域
  • 4.4时设置方法
  1. 代码设置
   getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
  1. 主题设置,在values-v19文件夹下
   <style name="MDTheme" parent="Theme.Design.Light.NoActionBar">       "android:windowTranslucentStatus">true   style>
  • 5.0时设置方法
    // 1. 设置状态栏透明    getWindow().setStatusBarColor(Color.TRANSPARENT)    // 这个标记的意思是绘制一个背景透明的状态栏,然后用StatusBarColor中的颜色去填充.    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);    // 2. 视图延伸至状态栏区域,状态栏上浮于视图之上    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)    // 最后还要清除这个标记    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
  • 6.0时设置方法
    // 1. 设置状态栏颜色透明    getWindow().setStatusBarColor(Color.TRANSPARENT)    // 这个标记的意思是绘制一个背景透明的状态栏,然后用StatusBarColor中的颜色去填充,上面一步已经设置了StatusBarColor的颜色    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);    // 2. View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN: 视图延伸至状态栏区域,状态栏上浮于视图之上          View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR:  设置状态栏上字体颜色和图标颜色为浅黑色的    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);    // 最后还要清除这个标记    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

更多相关文章

  1. Android(安卓)自定义控件
  2. Android学习笔记7&s3c2440学习系列8
  3. Android(安卓)7.0 Audio :通话中的音频调用接口
  4. Android实用小技巧(持续更新)
  5. eclipse 中设置android emulator 选项
  6. Android(安卓)TextView当中设置超链接、颜色、字体
  7. 无法在Android(安卓)Studio中设置断点
  8. Android(安卓)ApiDemos示例解析(80):Graphics->Sweep
  9. android Application Component研究之Activity(一)

随机推荐

  1. Android(安卓)网络与数据存储
  2. android中Sha256加密算法
  3. Android(安卓)网络视频播放
  4. Best practices in Android(安卓)develop
  5. Android(安卓)DatePickerDialog和TimePic
  6. android sdk开源中国网址
  7. android 对话框大全
  8. Android(安卓)菜单栏菜单功能
  9. android屏幕截图
  10. My first Android(安卓)programe!