第一次写,记录下心情
昨天接到一个任务,对方给了一个TXT格式的需求说明,同时附了几张效果图。
一看到图直接傻眼了,图上全是px,不过本菜鸟以前写dp多一些,突然见到这么多px,久忍不住去探索了下该怎么将px和dp以进行转换。同时拓展性的去了解了下常用的单位。
首先,先看看android中常用的单位代表的是什么:
- px: pixels像素
- dp/dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。
- pt: point,俗称“点”,ios常用点作单位,是一个标准的长度单位,"1pt=1/72英寸"
- sp: scaled pixels(放大像素),主要用作字体显示单位
说到转换,其实安卓源代码中含有TypedValue.java,可将各单位转换成像素px表示。
eg:
废话不多说,说正题,px与dp的转换,直接上代码(以下代码参考自http://blog.csdn.net/arui319/article/details/6777133):
public class PxDpExchangeUtil {
/**
* 将dp转换成px
*/
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
/**
* 将px转换成dp
*/
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
}