沉浸式状态栏
传统的手机状态栏是呈现出黑色条状的,有的和手机主界面有很明显的区别。这一样就在一定程度上牺牲了视觉宽度,界面面积变小。沉浸式是APP界面图片延伸到状态栏, 应用本身沉浸于状态栏。
为了实现沉浸式状态栏,有两种方法。第一种是为每个activity设置状态栏颜色,即变色龙式状态栏。第二种是将状态栏透明化,将布局延伸到状态栏下,实现真正的沉浸式状态栏。
变色式状态栏
设置状态栏颜色的接口从安卓5.0(API 21)才开始提供,因此变色式状态栏只能用在运行5.0以及5.0以上版本的安卓系统的设备上。
如果app使用了ActionBar的话,系统会自动根据bar的颜色改变状态栏的颜色。不在话下。
如果没有使用Actionbar,例如使用了自定义的Toolbar或者没有使用,则需要将主题设置为:
values/styles.xml:
<style name="AppTheme.Base" parent="Theme.Design.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
我们还需要将状态栏声明为透明,即将android:windowTranslucentStatus
这个属性设置为true
,这个API从安卓4.4(API 19)开始被支持。
values-v19:
<style name="AppTheme" parent="AppTheme.Base">
<item name="android:windowTranslucentStatus">true</item>
<item name="android:fitsSystemWindows">true</item>
</style>
如图所示:
状态栏的颜色与Toolbar颜色一致,但是被一层半透明的黑色笼罩。
不论是否使用了Actionbar或Toolbar,都可以使用以下方法通过API设置状态栏颜色:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.getWindow()
.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
activity.getWindow()
.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// colorResId就是你要设置的状态栏颜色值
activity.getWindow()
.setStatusBarColor(activity.getResources().getColor(colorResId));
}
那么可以达到如下的效果:
(未完待续)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。