沉浸式状态栏需要Android4.4以上版本才支持
第一种方式:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
// 透明状态栏
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// 透明导航栏
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
// 设置颜色
getWindow().getDecorView().setBackground(
new ColorDrawable(Color.RED));
// 设置高度
getWindow().getDecorView().setPadding(0, Util.dip2px(mContext, 30),
0, 0);
}
第二种方式:
public class FitSystemWindowRelativeLayout extends RelativeLayout {
private int insetsBottom = 0;
public FitSystemWindowRelativeLayout(Context context) {
this(context, null);
}
public FitSystemWindowRelativeLayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public FitSystemWindowRelativeLayout(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
setFitsSystemWindows(true);
}
@Override
protected boolean fitSystemWindows(Rect insets) {
insets.top = 0;
return super.fitSystemWindows(insets);
}
public int getInsetsBottom() {
return insetsBottom;
}
}
Activity的使用方式
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(TAG, this.getClass().getSimpleName() + " onCreate() invoked!!");
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
AppManager.getAppManager().addActivity(this);
}
@Override
public void setContentView(int layoutResID) {
FitSystemWindowRelativeLayout baseLayout = new FitSystemWindowRelativeLayout(this);
ViewGroup rootView = (ViewGroup) getWindow().getDecorView();
rootView.removeAllViews();
mLayoutInflater = LayoutInflater.from(this);
mLayoutInflater.inflate(layoutResID, rootView);
super.setContentView(baseLayout);
}