package com.minggo.pluto.util;
import android.content.Context;
import java.util.Locale;
/**
*
*/
public class DisplayUtil {
public static final int SCREEN_WIDTH_PIXELS_480 = 480;
public static final int SCREEN_WIDTH_PIXELS_720 = 720;
public static final int SCREEN_WIDTH_PIXELS_1080 = 1080;
/**
* 将px值转换为dip或dp值,保证尺寸大小不变(有精度损失)
*/
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
/**
* 将px值转换为dip或dp值,保证尺寸大小不变(无精度损失)
*/
public static float px2dipByFloat(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (pxValue / scale);
}
/**
* 将dip或dp值转换为px值,保证尺寸大小不变(有精度损失),类似Context.getDimensionPixelSize方法(四舍五入)
*/
public static int dip2px(Context context, float dipValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dipValue * scale + 0.5f);
}
/**
* 将dip或dp值转换为px值,保证尺寸大小不变(无精度损失),类似Context.getDimension方法
*/
public static float dip2pxByFloat(Context context, float dipValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (dipValue * scale);
}
/**
* 将px值转换为sp值,保证文字大小不变
*/
public static int px2sp(Context context, float pxValue) {
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (pxValue / fontScale + 0.5f);
}
/**
* 将sp值转换为px值,保证文字大小不变
*/
public static int sp2px(Context context, float spValue) {
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (spValue * fontScale + 0.5f);
}
/**
* 屏幕宽度
*/
public static int getScreenWidthPixels(Context context) {
return context.getResources().getDisplayMetrics().widthPixels;
}
/**
* 屏幕高度
*/
public static int getScreenHeightPixels(Context context) {
return context.getResources().getDisplayMetrics().heightPixels;
}
public static boolean isTargetScreenWidth(Context context, int targetPixels) {
return getScreenWidthPixels(context) == targetPixels;
}
public static boolean isTargetScreenHeight(Context context, int targetPixels) {
return getScreenHeightPixels(context) == targetPixels;
}
public static String getDisplayInfo(Context context) {
String infoFormat = "宽:%s,高:%s 宽Dip:%s,高Dip:%s\ndpi:%s,1dip=%sPixels";
int screenWidthPixels = DisplayUtil.getScreenWidthPixels(context);
int screenHeightPixels = DisplayUtil.getScreenHeightPixels(context);
float density = context.getResources().getDisplayMetrics().density;
Object[] infoFormatValue = {
screenWidthPixels, screenHeightPixels,
((int) (screenWidthPixels / density)), ((int) (screenHeightPixels / density)),
context.getResources().getDisplayMetrics().densityDpi, density
};
return String.format(Locale.getDefault(), infoFormat, infoFormatValue);
}
}