|
|
@@ -19,7 +19,7 @@ import java.lang.reflect.Method;
|
|
|
*/
|
|
|
|
|
|
public class StatusBarUtil {
|
|
|
- public static void setStatusBarDrakText(Activity activity) {
|
|
|
+ public static void setTransparentStatusBar(Activity activity, boolean lightContent) {
|
|
|
//这个方法只支持4.0以上系统
|
|
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
|
|
|
return;
|
|
|
@@ -30,21 +30,27 @@ public class StatusBarUtil {
|
|
|
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
|
|
|
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
|
|
|
window.setStatusBarColor(Color.TRANSPARENT);
|
|
|
- window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
|
|
|
+ window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
|
|
|
}
|
|
|
|
|
|
|
|
|
//判断是不是小米系统
|
|
|
- if(MIUISetStatusBarLightMode(activity.getWindow(), true)){
|
|
|
+ if (MIUISetStatusBarLightMode(activity.getWindow(), !lightContent)) {
|
|
|
return;
|
|
|
- }else if(FlymeSetStatusBarLightMode(activity.getWindow(), true)){//判断是不是魅族系统
|
|
|
+ } else if (FlymeSetStatusBarLightMode(activity.getWindow(), !lightContent)) {//判断是不是魅族系统
|
|
|
return;
|
|
|
- }else if(OPPOSetStatusBarLightMode(activity.getWindow(), true)){//判断是不是OPPO系统
|
|
|
+ } else if (OPPOSetStatusBarLightMode(activity.getWindow(), !lightContent)) {//判断是不是OPPO系统
|
|
|
return;
|
|
|
- }else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//判断当前是不是6.0以上的系统
|
|
|
- activity.getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
|
|
+ } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//判断当前是不是6.0以上的系统
|
|
|
+ int flag = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
|
|
|
+ if (lightContent) {
|
|
|
+ flag &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
|
|
|
+ } else {
|
|
|
+ flag |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
|
|
|
+ }
|
|
|
+ activity.getWindow().getDecorView().setSystemUiVisibility(flag);
|
|
|
return;
|
|
|
- }else {//如果以上都不符合就只能加个半透明的背景色了
|
|
|
+ } else {//如果以上都不符合就只能加个半透明的背景色了
|
|
|
setTranslucentForCoordinatorLayout(activity, 70);
|
|
|
return;
|
|
|
}
|
|
|
@@ -73,6 +79,7 @@ public class StatusBarUtil {
|
|
|
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 添加半透明矩形条
|
|
|
*
|
|
|
@@ -103,6 +110,7 @@ public class StatusBarUtil {
|
|
|
statusBarView.setBackgroundColor(Color.argb(alpha, 0, 0, 0));
|
|
|
return statusBarView;
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 获取状态栏高度
|
|
|
*
|
|
|
@@ -117,6 +125,7 @@ public class StatusBarUtil {
|
|
|
|
|
|
/**
|
|
|
* 修改小米手机系统的
|
|
|
+ *
|
|
|
* @param window
|
|
|
* @param dark
|
|
|
* @return
|
|
|
@@ -131,13 +140,13 @@ public class StatusBarUtil {
|
|
|
Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE");
|
|
|
darkModeFlag = field.getInt(layoutParams);
|
|
|
Method extraFlagField = clazz.getMethod("setExtraFlags", int.class, int.class);
|
|
|
- if(dark){
|
|
|
- extraFlagField.invoke(window,darkModeFlag,darkModeFlag);//状态栏透明且黑色字体
|
|
|
- }else{
|
|
|
+ if (dark) {
|
|
|
+ extraFlagField.invoke(window, darkModeFlag, darkModeFlag);//状态栏透明且黑色字体
|
|
|
+ } else {
|
|
|
extraFlagField.invoke(window, 0, darkModeFlag);//清除黑色字体
|
|
|
}
|
|
|
- result=true;
|
|
|
- }catch (Exception e){
|
|
|
+ result = true;
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
|
}
|
|
|
}
|
|
|
@@ -146,6 +155,7 @@ public class StatusBarUtil {
|
|
|
|
|
|
/**
|
|
|
* 魅族手机修改该字体颜色
|
|
|
+ *
|
|
|
* @param window
|
|
|
* @param dark
|
|
|
* @return
|
|
|
@@ -179,28 +189,29 @@ public class StatusBarUtil {
|
|
|
}
|
|
|
|
|
|
private static final int SYSTEM_UI_FLAG_OP_STATUS_BAR_TINT = 0x00000010;
|
|
|
+
|
|
|
private static boolean OPPOSetStatusBarLightMode(Window window, boolean lightMode) {
|
|
|
- if(Build.MANUFACTURER.equalsIgnoreCase("OPPO")) {
|
|
|
-
|
|
|
- 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. KITKAT) {
|
|
|
- if (lightMode) {
|
|
|
- vis |= SYSTEM_UI_FLAG_OP_STATUS_BAR_TINT;
|
|
|
- } else {
|
|
|
- vis &= ~SYSTEM_UI_FLAG_OP_STATUS_BAR_TINT;
|
|
|
- }
|
|
|
- }
|
|
|
- window.getDecorView().setSystemUiVisibility(vis);
|
|
|
- return true;
|
|
|
- }else {
|
|
|
- return false;
|
|
|
- }
|
|
|
+ if (Build.MANUFACTURER.equalsIgnoreCase("OPPO")) {
|
|
|
+
|
|
|
+ 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.KITKAT) {
|
|
|
+ if (lightMode) {
|
|
|
+ vis |= SYSTEM_UI_FLAG_OP_STATUS_BAR_TINT;
|
|
|
+ } else {
|
|
|
+ vis &= ~SYSTEM_UI_FLAG_OP_STATUS_BAR_TINT;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ window.getDecorView().setSystemUiVisibility(vis);
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
}
|
|
|
}
|