/**
* 工具类
*/
public class ScreenUtils {
private static Context sContext;
public static void init(Context context) {
sContext = context.getApplicationContext();
}
public static int getScreenWidth() {
WindowManager wm = (WindowManager) sContext.getSystemService(Context.WINDOW_SERVICE);
return wm.getDefaultDisplay().getWidth();
}
public static int getScreenHeight() {
WindowManager wm = (WindowManager) sContext.getSystemService(Context.WINDOW_SERVICE);
return wm.getDefaultDisplay().getHeight();
}
/**
* 获取状态栏高度
*/
public static int getStatusBarHeight() {
int result = 0;
int resourceId = sContext.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = sContext.getResources().getDimensionPixelSize(resourceId);
}
return result;
}
public static int dp2px(float dpValue) {
final float scale = sContext.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
public static int px2dp(float pxValue) {
final float scale = sContext.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
public static int sp2px(float spValue) {
final float fontScale = sContext.getResources().getDisplayMetrics().scaledDensity;
return (int) (spValue * fontScale + 0.5f);
}
/**
* 设置屏幕透明度
* @param activity
* @param f
*/
public static void setScreentAlpha(Activity activity, float f) {
WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
lp.alpha = f;
if (f == 1) {
activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);//不移除该Flag的话,可能出现黑屏的bug
}else {
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
}
activity.getWindow().setAttributes(lp);
}
/**
* 判断是否是全面屏
*/
private volatile static boolean mHasCheckAllScreen;
private volatile static boolean mIsAllScreenDevice;
public static boolean isAllScreenDevice(Context context) {
if (mHasCheckAllScreen) {
return mIsAllScreenDevice;
}
mHasCheckAllScreen = true;
mIsAllScreenDevice = false;
// 低于 API 21的,都不会是全面屏。。。
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
return false;
}
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
if (windowManager != null) {
Display display = windowManager.getDefaultDisplay();
Point point = new Point();
display.getRealSize(point);
float width, height;
if (point.x < point.y) {
width = point.x;
height = point.y;
} else {
width = point.y;
height = point.x;
}
if (height / width >= 1.97f) {
mIsAllScreenDevice = true;
}
}
return mIsAllScreenDevice;
}
}