Android5.x之沉浸式状态栏

在苹果IOS开发中,,可以使可以使顶部的系统栏和下边的标题栏颜色一致,而Android因为令人讨厌的碎片化问题和版本兼容问题,一直无法实现这样的效果,,知道Android4.4即api20,AndroidSDK才开始开发者自行定义顶部的标题栏Translucent Bars,,国内很多人把这玩意叫做沉浸式状态栏,,就像下图中这样:
Android5.x之沉浸式状态栏_第1张图片
在要实现这种效果之前,,需要在Android Studio中引入以下几个类库

 compile 'com.android.support:appcompat-v7:23.0.1'
 compile 'com.android.support:support-v4:23.0.1'
 compile 'com.android.support:design:23.0.1'

如果用ToolBar作为标题栏的话,有一点要注意:


    ToolBar高度设置为wrap_content
    ToolBar添加属性android:fitsSystemWindows="true"

android:fitsSystemWindows这个属性,主要是通过调整当前设置这个属性的view的padding去为我们的status_bar留下空间。

根据官方的解释,如果你不写,那么状态栏和Toolbar就会有挤一块的感觉了,类似会这样:

这里写图片描述
这是在5.x的手机上的效果
Android5.x之沉浸式状态栏_第2张图片
5.x默认并非是一个渐变的效果,类似是一个深一点的颜色。

在看看我们md的规范
Android5.x之沉浸式状态栏_第3张图片

状态栏应该是一个比Toolbar背景色,稍微深一点的颜色。
最后提一下,对于5.0由于提供了setStatusBarColor去设置状态栏颜色,但是这个方法不能在主题中设置windowTranslucentStatus属性。所以,可以编写一个value-v21文件夹,里面styles.xml写入:

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="@style/BaseAppTheme"> </style>
</resources>

以下文字与本片文章无关
在主题(theme)中设置windowTranslucentStatus为true将填充顶部的状态栏区域。(有虚拟按键的设备上)设置windowTranslucentNavigation为true将填充底部导航栏的区域。这两种样式默认会把应用的内容放到系统栏下面。如果仅仅想扩展背景样式到系统栏下,设置fitsSystemWindows为true会增加视图的Padding值让你的布局恢复正常大小,并且可以把背景扩大。

<!-- Base application theme. -->
    <style name="AppTheme" parent="android:Theme.Holo.Light">
        <item name="android:windowBackground">@color/green</item>

        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowTranslucentNavigation">true</item>
        <item name="android:fitsSystemWindows">true</item>
        <item name="android:actionBarStyle">@style/ActionBar.Solid.GreenStyle</item>
    </style>

    <style name="ActionBar.Solid.GreenStyle" parent="@android:style/Widget.Holo.Light.ActionBar.Solid">
        <item name="android:background">@color/green_accent</item>
    </style>

</resources>

你可能感兴趣的:(android,Studio,Android5-x)