1.全屏显示
首先引入状态栏依赖
//状态栏颜色 implementation 'com.githang:status-bar-compat:0.7'
在activity中
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (fullScreen()) { // 延伸显示区域到刘海 val lp = this.window.attributes if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES this.window.attributes = lp } } else { StatusBarCompat.setStatusBarColor(this, statusBarColor()) } }
2.设置状态栏颜色
/** * 把状态栏设成其他颜色 */ open fun setStatusBarColor(color: Int) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { val decorView = window.decorView decorView.setOnApplyWindowInsetsListener { v: View, insets: WindowInsets? -> val defaultInsets = v.onApplyWindowInsets(insets) defaultInsets.replaceSystemWindowInsets( defaultInsets.systemWindowInsetLeft, 0, defaultInsets.systemWindowInsetRight, defaultInsets.systemWindowInsetBottom ) } ViewCompat.requestApplyInsets(decorView) window.statusBarColor = ContextCompat.getColor(this, color) } }
3修改状态栏字体颜色
/**
* 设置状态栏文字色值为深色调
*
* @param useDart 是否使用深色调
* @param activity
*/
public static void setStatusTextColor(boolean useDart,Activity activity) {
if (isFlyme()) {
processFlyMe(useDart,activity);
}else if (isMIUI()) {
processMIUI(useDart,activity);
}else if (Rom.isOppo()) {
setOppoLightStatusBarIcon(true,activity);
}else {
if (useDart) {
if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.M) {
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
}else {
activity.getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
}
activity.getWindow().getDecorView().findViewById(android.R.id.content).setPadding(0,0,0,BarModeColorUtils.navigationHeight);
}
}
/**
* 接口传入值ture时状态栏图标为黑色,接口转入值为false状态栏图标为白色
* oppo 视频状态栏
* @param lightMode
* @param activity
*/
private static void setOppoLightStatusBarIcon(boolean lightMode,Activity activity) {
int SYSTEM_UI_FLAG_OP_STATUS_BAR_TINT =0x00000010;
if (Build.VERSION.SDK_INT ==Build.VERSION_CODES.LOLLIPOP) {
Window window =activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.getDecorView().setSystemUiVisibility(SYSTEM_UI_FLAG_OP_STATUS_BAR_TINT);
}else {
Window window =activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
int vis = window.getDecorView().getSystemUiVisibility();
if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.M) {
if (lightMode) {
vis |=View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
}else {
vis &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
}
}else if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.LOLLIPOP) {
if (lightMode) {
vis |= SYSTEM_UI_FLAG_OP_STATUS_BAR_TINT;
}else {
vis &= ~SYSTEM_UI_FLAG_OP_STATUS_BAR_TINT;
}
}
window.getDecorView().setSystemUiVisibility(vis);
}
}