您的位置:首页 > 移动开发 > Android开发

Android笔记之沉浸式状态栏

2016-05-26 10:53 423 查看
今天对项目顶部的状态栏大黑条实在是忍无可忍,决定使用android4.4以上才支持的沉浸式状态栏。注意,4.4以上,也就是api19以上才支持哦!

效果图:



实现:

/**
* 设置透明状态栏
*/
private void setTransparent() {
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { //5.0以上
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { // 4.4以上5.0以下
//透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}


然后在Activity的onCreate中调用:

super.onCreate(savedInstanceState);

setTransparent();
... // 其他代码


再在使用布局的跟布局中添加:

android:clipToPadding="true"
android:fitsSystemWindows="true"


例如:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ab_root_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="true"
android:fitsSystemWindows="true"
android:orientation="vertical">

... // 其他布局
</LinearLayout>


ok,就是这么简单,设置完成后你就会发现状态栏的背景跟Activity最外层layout的背景一致了,不管是图片还是颜色值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息