dip和px 的换算

来源:互联网 发布:核函数 知乎 编辑:程序博客网 时间:2024/04/28 08:31
      网上找到好多资料,都是这么说的:一般我们为了支持WVGA、HVGA和QVGA推荐使用dip,不依赖像素。具体的px和dip的含义就不单独说明了,网上资料很多。
    最近把三星的app反编译,然后看了下布局文件,发现都是用dip单位,一直看不懂,拷贝运行,得出的UI都走样完蛋,只能上网找dip的资料,找到的肯定都是转载的多,关键是看完也云里雾里,都是说含义。
这么说吧,现在遇到的问题是:
我有一张154×95的图片,和一台480×800、4.3寸的手机,如果使用dip为单位,该怎么把这张图片画出来?
dip的换算: dip(value)=(int) (px(value)/density + 0.5f)
density即屏幕密度,可以通过代码获取,一版默认的值为:0.75(ldpi),1(mdpi),1.5(hdpi),2(xhdpi)。代码获取的方式为
density = context.getResources().getDisplayMetrics().density;
  所以按照公式,这张图片算出来的就是宽:(154/1.5 + 0.5f) =  103.1 高:(95/1.5 + 0.5f) = 65.8,按照这个公式画出来的果然就正常了。

参考:
http://my.oschina.net/mayi00/blog/35122