import android.content.res.Resources;
public class DisplayUtil {
public static int px2dp(float pxValue) {
final float scale = Resources.getSystem().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
public static int dp2px(float dipValue) {
final float scale = Resources.getSystem().getDisplayMetrics().density;
return (int) (dipValue * scale + 0.5f);
}
public static int px2sp(float pxValue) {
final float fontScale = Resources.getSystem().getDisplayMetrics().scaledDensity;
return (int) (pxValue / fontScale + 0.5f);
}
public static int sp2px(float spValue) {
final float fontScale = Resources.getSystem().getDisplayMetrics().scaledDensity;
return (int) (spValue * fontScale + 0.5f);
}
}
- density、densityDpi与scaledDensity
- density:表示每英寸有多少个显示点,与分辨率是两个概念。HVGA屏density=160;QVGA屏density=120;WVGA屏density=240;WQVGA屏density=120。
- densityDpi:屏幕像素密度,一般计算公式为,由屏幕长度的分辨率,根据勾股定律求出对角线的像素数,再除了屏幕的尺寸,即可得densityDpi。
- scaledDensity:字体缩放比例。