package com.tejia.lijin.app.util;
|
|
import android.app.Activity;
|
import android.graphics.Color;
|
import android.os.Build;
|
import android.view.View;
|
import android.view.Window;
|
import android.view.WindowManager;
|
import android.widget.LinearLayout;
|
import android.widget.RelativeLayout;
|
|
import com.tejia.lijin.app.R;
|
|
import java.lang.reflect.Field;
|
|
/**
|
* Created by weikou2015 on 2018/9/13.
|
*/
|
|
public class TopStatusSettings {
|
/*
|
* 计算状态栏高度并设置
|
*/
|
public static void setStatusView(Activity mActivity, View v_status_bar) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
Window window = mActivity.getWindow();
|
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
|
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
|
window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
|
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
|
window.setStatusBarColor(Color.WHITE);
|
//设置状态栏文字颜色及图标为深色
|
mActivity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
int result = 0;
|
int resourceId = mActivity.getResources().getIdentifier("status_bar_height",
|
"dimen", "android");
|
if (resourceId > 0) {
|
result = mActivity.getResources().getDimensionPixelSize(resourceId);
|
}
|
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
|
result);
|
v_status_bar.setLayoutParams(params);
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
try {
|
Class decorViewClazz = Class.forName("com.android.internal.policy.DecorView");
|
Field field = decorViewClazz.getDeclaredField("mSemiTransparentStatusBarColor");
|
field.setAccessible(true);
|
field.setInt(window.getDecorView(), Color.TRANSPARENT); //改为透明
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
} else {
|
v_status_bar.setVisibility(View.GONE);
|
}
|
}
|
|
/*
|
* 计算状态栏高度并设置
|
*/
|
public static void setStatusViewAndDeepColor(Activity mActivity) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
Window window = mActivity.getWindow();
|
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
|
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
|
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
|
window.setStatusBarColor(Color.WHITE);
|
//设置状态栏文字颜色及图标为深色
|
mActivity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
|
int result = 0;
|
int resourceId = mActivity.getResources().getIdentifier("status_bar_height",
|
"dimen", "android");
|
if (resourceId > 0) {
|
result = mActivity.getResources().getDimensionPixelSize(resourceId);
|
}
|
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
|
result);
|
mActivity.findViewById(R.id.v_status_bar).setLayoutParams(params);
|
if (mActivity.findViewById(R.id.v_status_bar1) != null) {
|
mActivity.findViewById(R.id.v_status_bar1).setLayoutParams(params);
|
}
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
try {
|
Class decorViewClazz = Class.forName("com.android.internal.policy.DecorView");
|
Field field = decorViewClazz.getDeclaredField("mSemiTransparentStatusBarColor");
|
field.setAccessible(true);
|
field.setInt(window.getDecorView(), Color.TRANSPARENT); //改为透明
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
} else {
|
mActivity.findViewById(R.id.v_status_bar).setVisibility(View.GONE);
|
if (mActivity.findViewById(R.id.v_status_bar1) != null) {
|
mActivity.findViewById(R.id.v_status_bar1).setVisibility(View.GONE);
|
}
|
}
|
}
|
|
|
public static void setStatusViewAndDeepColor(Activity mActivity, View stateBar, View stateBar1) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
Window window = mActivity.getWindow();
|
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
|
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
|
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
|
window.setStatusBarColor(Color.WHITE);
|
//设置状态栏文字颜色及图标为深色
|
mActivity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
|
int result = 0;
|
int resourceId = mActivity.getResources().getIdentifier("status_bar_height",
|
"dimen", "android");
|
if (resourceId > 0) {
|
result = mActivity.getResources().getDimensionPixelSize(resourceId);
|
}
|
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
|
result);
|
stateBar.setLayoutParams(params);
|
if (stateBar1 != null) {
|
stateBar1.setLayoutParams(params);
|
}
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
try {
|
Class decorViewClazz = Class.forName("com.android.internal.policy.DecorView");
|
Field field = decorViewClazz.getDeclaredField("mSemiTransparentStatusBarColor");
|
field.setAccessible(true);
|
field.setInt(window.getDecorView(), Color.TRANSPARENT); //改为透明
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
} else {
|
stateBar.setVisibility(View.GONE);
|
if (stateBar1 != null) {
|
stateBar1.setVisibility(View.GONE);
|
}
|
}
|
}
|
|
/*
|
* 计算状态栏高度并设置
|
*/
|
public static void setStatusViewAndDeepColor2(Activity mActivity) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
Window window = mActivity.getWindow();
|
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
|
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
|
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
|
window.setStatusBarColor(Color.TRANSPARENT);
|
int result = 0;
|
int resourceId = mActivity.getResources().getIdentifier("status_bar_height",
|
"dimen", "android");
|
if (resourceId > 0) {
|
result = mActivity.getResources().getDimensionPixelSize(resourceId);
|
}
|
//设置状态栏文字颜色及图标为深色
|
mActivity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, result);
|
mActivity.findViewById(R.id.v_status_bar).setLayoutParams(params);
|
try {
|
Class decorViewClazz = Class.forName("com.android.internal.policy.DecorView");
|
Field field = decorViewClazz.getDeclaredField("mSemiTransparentStatusBarColor");
|
field.setAccessible(true);
|
field.setInt(mActivity.getWindow().getDecorView(), Color.TRANSPARENT); //改为透明
|
} catch (Exception e) {
|
}
|
} else {
|
mActivity.findViewById(R.id.v_status_bar).setVisibility(View.GONE);
|
}
|
}
|
|
/*
|
* 计算状态栏高度并设置
|
*/
|
public static void setStatusViewAndDeepColorNoView(Activity mActivity) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
Window window = mActivity.getWindow();
|
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
|
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
|
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
|
window.setStatusBarColor(Color.WHITE);
|
//设置状态栏文字颜色及图标为深色
|
mActivity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
try {
|
Class decorViewClazz = Class.forName("com.android.internal.policy.DecorView");
|
Field field = decorViewClazz.getDeclaredField("mSemiTransparentStatusBarColor");
|
field.setAccessible(true);
|
field.setInt(window.getDecorView(), Color.TRANSPARENT); //改为透明
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
}
|