现在开发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 代码完毕。