文章目录

  • 1.px和ppi(dpi)
  • 2. dp和px


1.px和ppi(dpi)

分辨率 :分辨率就是手机屏幕的横向像素×竖向像素, 常见的分辨率有480×800、720×1280、1080×1920等,像素单位是px

屏幕尺寸:屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米

屏幕像素密度:屏幕像素密度指每英寸屏幕所拥有的像素点数,英文简称ppi(pixels per inch,每英寸像素数), 另外还有个dpidots per inch ,每英寸多少点), 设计师切图的时候以dpi为准,而屏幕分辨率参数中给的是ppi, 所以一般我们可以简单的认为ppi等价于dpi

假如我们知道一部手机的分辨率是1080×1920,屏幕大小是5英寸,怎么算出此屏幕的密度呢?

根据勾股定理,对角线的像素数 =2203,2203除以5就是此屏幕的密度了,计算结果是440。

Android的像素密度 手机的像素密度ppi_屏幕密度

5英寸1080×1920的屏幕密度是440,而相同分辨率的4.5英寸屏幕密度是490。如此看来,屏幕密度将会出现很多数值,呈现严重的碎片化。而密度又是安卓屏幕将界面进行缩放显示的依据,那么安卓是如何适配这么多屏幕的呢?

其实,每部安卓手机屏幕都有一个初始的固定密度,这些数值是120、160、240、320、480。

安卓对界面元素进行缩放的比例依据正是初始的固定密度,比如前面计算的440就可能近似适配到初始的固定密度480。

参考官方说明: https://developer.android.com/guide/topics/resources/providing-resources

Android的像素密度 手机的像素密度ppi_屏幕尺寸_02


Android的像素密度 手机的像素密度ppi_缩放_03

2. dp和px

dp也可写为dip,即density-independent pixel, 有点类似于windows的DIB, 也就是它具有设备无关性,比如一张宽和高均为100dp的图片在320×480480×800的手机上肉眼“看起来”一样大。而实际 上,它们的像素值px并不一样。

Android的像素密度 手机的像素密度ppi_Android的像素密度_04


在安卓中,系统密度为160dpmdpi手机屏幕为基准屏幕,即320×480的手机屏幕。在这个屏幕中,1dp=1px

5个基本密度之间的缩放比为 3:4:6:8:12:16 , 相隔数值之间是2倍的关系, 如上图所示。

所以如果设计师制作效果图,在mdpi中给了张100px的图(1dp=1px,即100dp),那么mdpi对应4, xhdpi对应8,2倍的关系, 要实现同样的100dpxhdpi的图大小要到200px

反着计算更重要,比如你用PhotoShop在720×1280(xhdpi)的画布中制作了界面效果图,两个元素的间距是20px,那要标注多少dp呢?2倍的关系,那就是 10dp

当安卓系统字号设为普通时,sppx的尺寸换算和dppx是一样的。比如某个文字大小在720×1280的PhotoShop画布中是24px,那么这个文字大小是12sp