package cn.mutils.app.ui;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.util.AttributeSet;
import android.view.View;
import android.view.WindowManager;
import cn.mutils.app.ui.core.IStatusBarOwner;
import cn.mutils.app.util.AppUtil;
import cn.mutils.core.codec.FlagUtil;
@SuppressWarnings("ResourceType")
@SuppressLint("DrawAllocation")
public class StatusBox extends View {
protected int mMeasuredHeight = -1;
public StatusBox(Context context) {
super(context);
}
public StatusBox(Context context, AttributeSet attrs) {
super(context, attrs);
}
public StatusBox(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.AT_MOST) {
if (mMeasuredHeight == -1) {
Context context = getContext();
if (context instanceof IStatusBarOwner) {
if (!((IStatusBarOwner) context).isStatusBarTranslucent()) {
mMeasuredHeight = 0;
} else {
mMeasuredHeight = AppUtil.getStatusBarHeight(context);
}
} else {
if (VERSION.SDK_INT >= VERSION_CODES.KITKAT) {
if (context instanceof Activity) {
int flags = ((Activity) context).getWindow().getAttributes().flags;
if (FlagUtil.hasFlags(flags, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)) {
mMeasuredHeight = AppUtil.getStatusBarHeight(context);
} else {
mMeasuredHeight = 0;
}
} else {
mMeasuredHeight = 0;
}
} else {
mMeasuredHeight = 0;
}
}
}
heightMeasureSpec = MeasureSpec.makeMeasureSpec(mMeasuredHeight, MeasureSpec.EXACTLY);
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}