第一种方法,代码如下
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*/
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
第二种方法
px = (density/160)dp
density一般为3个常用固定值240/160/120
分别对应WVGA/HVGA/QVGA
有大神指点指点那种是正确的吗?
第一种方式是对的,第二种方式只针对特定的几种分辨率的,但是要知道Android目前出现的设备,分辨率多种多样
屏幕密度density表示1dp里面有多少个像素px,所以第一种方式计算是对的,还加入了四舍五入。
这里还有另外一种方式,除了转化dp到px,还可以从sp到px,还有其他的
Context context = 得到Context
float dpVaule = 20;
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpVaule, context.getResources().getDisplayMetrics());
第一个参数就是表示是将什么转化为px,这里是dp,感兴趣自己去使用一下
第一个是通用的方法,即针对任何分辨率。第二个是针对160分辨率