个人学习总结,留下
文章参考www.jianshu.com/p/c6f65b2d2420
4.4版本之上版本兼容
1、全屏(隐藏状态栏)
(把它放在setContentView之前之后都行,4.4 ~ 7.0 测试通用)getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);效果如下:
2、状态栏透明
5.0+ 版本
2.1
style中添加
<item name="android:windowTranslucentStatus">true</item>
如下:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<!-- <item name="android:windowTranslucentStatus">true</item>-->
<item name="colorPrimaryDark">@color/colorPrimary</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
效果如下:
2.2
在跟布局添加android:fitsSystemWindows="true"
效果如下:
2.3
true添加之后在布局的跟布局不加android:fitsSystemWindows="true"
在toolbar的更布局添加android:fitsSystemWindows="true"
,如果toolbar外层有AppBarLayout,则加载AppBarLayout上
效果如下:
* 4.4 版本 *
2.4
如果只在style中添加<item name="android:windowTranslucentStatus">true</item>
效果如下
2.5
在根布局加上android:fitsSystemWindows=”true”
效果如下:状态栏变成白色渐变:
2.6
在toolbar更布局添加 android:fitsSystemWindows="true"
,如果toolbar外层有AppBarLayout,则加载AppBarLayout上
效果如下
3、状态栏颜色设置
5.0+ 版本
3.1
Activity中设置
或者style中设置
getWindow().setStatusBarColor(Color.RED);
<item name="colorPrimaryDark">@color/statusColor</item>
* 4.4 版本 *
3.2
package com.example.sky.rrhttpdemo.activity;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Build;
import android.view.View;
import android.view.ViewGroup;
/**
* Created by Sky on 2017-12-7.
*/
public class StatusBarCompat {
private static final int INVALID_VAL = -1;
private static final int COLOR_DEFAULT = Color.parseColor("#20000000");
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public static void compat(Activity activity, int statusColor)
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{
if (statusColor != INVALID_VAL)
{
activity.getWindow().setStatusBarColor(statusColor);
}
return;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)
{
int color = COLOR_DEFAULT;
ViewGroup contentView = (ViewGroup) activity.findViewById(android.R.id.content);
if (statusColor != INVALID_VAL)
{
color = statusColor;
}
View statusBarView = new View(activity);
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
getStatusBarHeight(activity));
statusBarView.setBackgroundColor(color);
contentView.addView(statusBarView, lp);
}
}
public static void compat(Activity activity)
{
compat(activity, INVALID_VAL);
}
public static int getStatusBarHeight(Context context)
{
int result = 0;
int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0)
{
result = context.getResources().getDimensionPixelSize(resourceId);
}
return result;
}
}
StatusBarCompat.compat(this, getResources().getColor(R.color.status_bar_color));
注:
1、style 设置 true
2、ToolBar 添加android:fitsSystemWindows=”true”