這是一個為Android App 設(shè)置狀態(tài)欄的工具類, 可以在4.4及其以上系統(tǒng)中實現(xiàn) 沉浸式狀態(tài)欄/狀態(tài)欄變色,支持設(shè)置狀態(tài)欄透明度,滿足你司設(shè)計師的各種要求(霧)。
在此之前我寫過一篇Android App 沉浸式狀態(tài)欄解決方案,后來我司設(shè)計師說默認(rèn)的透明度太深了,讓我改淺一點,然后在想了一些辦法之后給解決了。本著不重復(fù)造輪子的原則,索性整理成一個工具類,方便需要的開發(fā)者。
項目 GitHub 地址
Sample 下載
下載 StatusBarUtil-Demo
特性
設(shè)置狀態(tài)欄顏色
StatusBarUtil.setColor(Activity activity, int color)

設(shè)置狀態(tài)欄半透明
StatusBarUtil.setTranslucent(Activity activity, int statusBarAlpha)

? ?
設(shè)置狀態(tài)欄全透明
StatusBarUtil.setTransparent(Activity activity)

為包含 DrawerLayout
的界面設(shè)置狀態(tài)欄顏色(也可以設(shè)置半透明和全透明)
StatusBarUtil.setColorForDrawerLayout(Activity activity, DrawerLayout drawerLayout, int color)

為使用 ImageView 作為頭部的界面設(shè)置狀態(tài)欄透明
StatusBarUtil.setTranslucentForImageView(Activity activity, int statusBarAlpha, View needOffsetView)

在 Fragment 中使用
為滑動返回界面設(shè)置狀態(tài)欄顏色
StatusBarUtil.setColorForSwipeBack(Activity activity, @ColorInt int color, int statusBarAlpha)

通過傳入 statusBarAlpha
參數(shù),可以改變狀態(tài)欄的透明度值,默認(rèn)值是112。
使用
在 build.gradle 文件中添加依賴, StatusBarUtil 已經(jīng)發(fā)布在 JCenter:
compile 'com.jaeger.statusbaruitl:library:1.3.1'
在 setContentView()
之后調(diào)用你需要的方法,例如:
setContentView(R.layout.main_activity);
...
StatusBarUtil.setColor(MainActivity.this, mColor);
如果你在一個包含 DrawerLayout
的界面中使用, 你需要在布局文件中為 DrawerLayout
添加
android:fitsSystemWindows="true"
屬性:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout" android:layout_width="match_parent"
android:layout_height="match_parent" android:fitsSystemWindows="true">
...
</android.support.v4.widget.DrawerLayout>
當(dāng)你設(shè)置了 statusBarAlpha
值時,該值需要在 0 ~ 255 之間
在 Fragment 中的使用可以參照 UseInFragmentActivity.java 來實現(xiàn)