freedom_wings4
2016-08-06 12:00
采纳率: 19.8%
浏览 846
已采纳

安卓,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

有大神指点指点那种是正确的吗?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • popfisher 2016-08-06 13:20
    已采纳

    第一种方式是对的,第二种方式只针对特定的几种分辨率的,但是要知道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,感兴趣自己去使用一下

    打赏 评论
  • Antway_ 2016-08-06 12:02

    第一个是通用的方法,即针对任何分辨率。第二个是针对160分辨率

    打赏 评论

相关推荐 更多相似问题