/**
* 通用页面,需要设置沉浸式
* @param fitSystemForTheme
*/
public void setFitSystemForTheme(boolean fitSystemForTheme) {
setFitSystemForTheme(fitSystemForTheme, R.color.white);
setStatusBarTextColor(false);
}
/**
* 通用页面,需要设置沉浸式
* @param fitSystemForTheme
*/
public void setFitSystemForTheme2(boolean fitSystemForTheme) {
setFitSystemForTheme(fitSystemForTheme, "#ffffffff");
setStatusBarTextColor(true);
}
/**
* 设置是否是沉浸式,并可设置状态栏颜色
* @param fitSystemForTheme
* @param colorId 颜色资源路径
*/
public void setFitSystemForTheme(boolean fitSystemForTheme, @ColorRes int colorId) {
setFitSystem(fitSystemForTheme);
//初始设置
StatusBarCompat.compat(this, ContextCompat.getColor(mContext, colorId));
}
/**
* 修改状态栏文字颜色
* @param isLight 是否是浅色字体
*/
public void setStatusBarTextColor(boolean isLight) {
StatusBarCompat.setLightStatusBar(mContext, !isLight);
}
/**
* 设置是否是沉浸式,并可设置状态栏颜色
* @param fitSystemForTheme true 不是沉浸式
* @param color 状态栏颜色
*/
public void setFitSystemForTheme(boolean fitSystemForTheme, String color) {
setFitSystem(fitSystemForTheme);
//初始设置
StatusBarCompat.compat(mContext, Color.parseColor(color));
}
/**
* 设置是否是沉浸式
* @param fitSystemForTheme
*/
public void setFitSystem(boolean fitSystemForTheme) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
if(fitSystemForTheme) {
ViewGroup contentFrameLayout = (ViewGroup) findViewById(Window.ID_ANDROID_CONTENT);
View parentView = contentFrameLayout.getChildAt(0);
if (parentView != null && Build.VERSION.SDK_INT >= 14) {
parentView.setFitsSystemWindows(true);
}
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = 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);
}
}