現在開發APP,狀態欄是必備的。
沉浸式狀態欄只支持安卓4.4及以上的版本
狀態欄:4.4上是漸變色,5.0上是完全透明
透明效果:
全屏效果:(字體黑色,背景白色)
在values、values-v19、values-v21文件夾下的styles.xml設置Theme
透明:
<style name="AppThemeFragment" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
全屏:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowTranslucentStatus">false</item>
<item name="android:fitsSystemWindows">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
</style>
修改狀態欄的代碼:
/**
* 設置導航欄背景爲白色,字體圖標爲黑色
* 說明:
* 1. SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏顯示,但狀態欄不會被隱藏覆蓋。
* 2. SYSTEM_UI_FLAG_LIGHT_STATUS_BAR:設置狀態欄圖標爲黑色或者白色
* 3. StatusBarUtil 工具類是修改狀態欄的顏色爲白色。
*
* @param window
* @param activity
*/
public static void initStatusBar(Window window, Activity activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
window.getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
StatusBarUtil.setStatusBarColor(activity, R.color.white);
}
}
/**
* 修改狀態欄顏色,支持4.4以上版本
*
* @param activity
* @param colorId
*/
private static void setStatusBarColor(Activity activity, int colorId) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = activity.getWindow();
window.setStatusBarColor(activity.getResources().getColor(colorId));
}
}
在onCreate()方法中設置:
透明:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window window = getWindow();
window.getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
window.setStatusBarColor(Color.TRANSPARENT);
}
全屏:
Window window = getWindow();
// 設置狀態欄背景爲白色,字體圖標爲黑色
StatusBarUtil.initStatusBar(window, this);
ok 代碼完畢。