Android开发PX与DIP的清晰解释[魔豆之路]

px(pixels)——像素,不依赖设备。

dip  (device independent pixels)——等同 dp,与设备相关。一般我们为了支持WCGA、HVGA和QVGA推荐使用这个,不依赖于像素。
sp (scaled pixels—best for text size)——带比例的像素,主要用于字体显示。

 

到底pxdip有什么区别呢?
dip 什么时候等于px? 什么时候不等于呢?
  1. 在Density是160的设备上,1dip = 1px, HVGA屏density=160;换到一个Density是240的设备上,dip和px体现出来的大 小就不一样了, 1.5 px = 1 dip。
  2. 通常而言:WQVGA(160 X  240)屏density=120;QVGA(240 X 320)屏density=120;HVGA(320 X 480)屏density=160;WVGA(480X 800)屏density=240;
  3. VGA屏是标准屏640 X 480 的分辨率
density值表示每英寸有多少个显示点(密度),与分辨率(宽X高的像素点)是两个概念。
当屏幕density=240时, 使用hdpi标签的资源
当屏幕density=160时,使用mdpi标签的资源
当屏幕density=120时,使用ldpi标签的资源

 

不加任何标签的资源是各种分辨率情况下共用的。布局时尽量使用单位dip,少使用px。

换算公式为:

pixs =dips * (densityDpi/160).
dips=(pixs*160)/densityDpi

 

如何获得设备的屏幕分辨率和屏幕密度?
如分辨率为480*800,密度为240的设备,方法如下:
DisplayMetrics dm =getResources().getDisplayMetrics();
dm.densityDpi=240
dm.widthPixels=480
dm.heightPixels=800


声明: 本文由( 魔豆先生 )原创编译,转载请保留链接: Android开发PX与DIP的清晰解释

你可能感兴趣的:(android,px,dip)