Android透明状态栏的实现

来源:互联网 发布:linux开机自启动服务 编辑:程序博客网 时间:2024/05/28 16:27

Android 4.4 (API 19)开始支持透明状态栏,可以在配置activity的theme或者在代码中开启透明状态栏。

Android根据系统版本调用不同资源文件

先介绍下安卓的根据系统版本配置不同的资源文件,可以在资源文件夹新建values(默认)、values-v19(对应api 19)、values-v21(对应api 21)。apk安装后会根据系统版本去调用与系统版本对应的values文件夹下的文件,得到对应的value。
比如values、values-v19、values-v21下都有styles文件定义了一个AppTheme主题,
android 4.0的手机会调用values/styles/AppTheme,
android 4.4的手机会调用values-v19/styles/AppTheme,
android 5.0的手机会调用values-v21/styles/AppTheme。
values-v19/styles未定义AppTheme,则android 4.4会调用values/styles/AppTheme。
………………

Android 透明状态栏使用

  • android:windowDrawsSystemBarBackgrounds为true时才可设置状态栏透明或者添加背景色
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
  • android:windowTranslucentStatus,透明状态栏,将状态栏底部的内容透上去

  • android:statusBarColor,状态栏背景色。
    备注:windowTranslucentStatus为false时statusBarColor才生效

  • fitSystemWindows

至此状态栏透明已经实现,但是显示效果不佳。界面中最靠近状态栏的内容会被挤到状态栏中。即将状态栏也作为layout的一部分绘制界面,为了避免这种情况,可在布局文件中加入fitSystemWindows=true。
注意:fitSystemWindows需要在与状态栏直接连接的布局中设置

使用范例

e.g.

<style name="AppTheme.TranslucentStatus">        <itemname="android:windowDrawsSystemBarBackgrounds">            true</item>         <item name="android:windowTranslucentStatus">            true</item> </style><activity name =".MainActivity"style="@style/AppTheme.TranslucentStatus"/>
0 0