安卓,dp转px,网上看到有2种不同的方法,哪位大神说说哪种是对的?

第一种方法,代码如下

 /** 
     * 根据手机的分辨率从 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分辨率