freedom_wings4 2016-08-06 12:00 采纳率: 0%
浏览 858
已采纳

安卓,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,感兴趣自己去使用一下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b