px和dp、px和sp互相转换的工具类:
public class PixelUtil {
private Context context;
public PixelUtil(Context context) {
this.context = context;
}
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素) 。
*/
public static int dp2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
/**
* 根据手机的分辨率从 px(像素) 的单位 转成为 dp 。
*/
public static int px2dp(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
/**
* 根据手机的分辨率从 sp 的单位 转成为 px(像素) 。
*/
public static int sp2px(Context context, float value) {
Resources r;
if (context == null) {
r = Resources.getSystem();
} else {
r = context.getResources();
}
float spvalue = value * r.getDisplayMetrics().scaledDensity;
return (int) (spvalue + 0.5f);
}
/**
* 根据手机的分辨率从 px(像素) 的单位 转成为 sp 。
*/
public static int px2sp(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (pxValue / scale + 0.5f);
}
}
调用方法:
height = PixelUtil.dp2px(context, 80f);