android中的尺度单位:px、dpi、 dp、sp 、pt

px

像素(pixel),代表屏幕上一个物理的像素点。比如平常我们所说的1920*1080(1080P)的分辨率,表示的就是垂直方向有1920个像素点,水平方向有1080个像素点。

dpi (ppi)

像素密度(dots per inch)。
Wiki中的解释:Monitors do not have dots, but do have pixels; the closely related concept for monitors and images is pixels per inch or PPI。也就是说在显示器中没有dots这个概念,在图像和显示器中表示的意义与PPI相近。
我们在移动开发中dpi与ppi可以看成是同样的概念,ppi的意义是pixels per inch,也就是每英寸上的像素点,其计算方法为:
        PPI = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数
我们知道现在手机的主流屏幕尺寸的长宽比都是16:9,而我们所说的屏幕尺寸都是指的对角线的长度,因此通过简单的换算就可以计算出长和宽的长度。比如说小米最新发布的小米note,屏幕分辨率为1920*1080,屏幕尺寸为5.7英寸,我们通过简单地计算ppi = √1920*1920+1080*1080/5.7 = 386.47。一般ppi越高,表示每英寸上的像素点就越多,屏幕显示就越清晰。

dp (dip)

密度无关像素(Density-independent pixels)。
设想一下,如果我们定义一个长度,并以px为单位。由于不同手机的分辨率不一样,那么就会造成同一个app在两台手机上显示的大小和比例不一致。而以dp为单位就可以很好地解决这个问题。
在dpi=160时,1dp=1px。从这个等式关系中,我们要注意两个地方,一是dp与屏幕尺寸和分辨率无关,而与两者的比值有关,二是dp和px有简单的换算关系dp*ppi/160 = px。因此我们可以想像一下,当我们的频幕分辨率不变化,而将屏幕尺寸增大一倍(对角线)时,此时每两个像素之间的距离也增大了一倍,如果我们是以px作为尺寸单位,那么画出来的图像应该要增大一倍,而如果我们以dp作单位,由于此时的dpi降低了一半,根据上面的换算关系,此时的1dp=0.5px,虽然像素间距变大了,但是像素点少了,因此画出来的图像并不会变大,基本和原来的图像大小一致。同理,当我们屏幕的尺寸不变,分辨率增大时,呈现出来的图像大小也不会发生变化。

sp

安卓的字体单位(Scale-independent pixels)。
以dpi=160为参考标准,当字体大小为100%时,1sp=1px。一般文字的尺寸为sp为单位,而非文字尺寸使用dp为单位。

pt

磅,物理尺度单位.1(pt)=1/72(in)

上面讲到了各个单位的基本意义。我们可以想像一下,如果将同一张图片放到不同ppi的手机上会怎么样。由于手机的像素密度不一样,因此像素密度大的手机只需要比较小的面积就可以展现出图片,而像素密度小的则需要更大的面积,我们可以想像的到的是,像素密度大的手机显示的图片会小,而像素密度小的手机显示的图片会大。所以为了解决这个问题,对于不同ppi的手机应该展示分辨率不同的图片,在android的资源目录下,会有以下几个文件夹:

drawable-hdpi
drawable-ldpi
drawable-mdpi
drawable-xhdpi
drawable-xxhdpi
系统会自动根据不同的ppi直接调用不同目录下的资源文件。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值