开发中不免会遇到分辨率、DPI、PPI和屏幕尺寸等术语,那就弄弄清楚这些概念的真正含义。

分辨率

分辨率这个词在很多地方都有,比如相机、视频、扫描仪。这里说的就是显示器的分辨率。显示器是由一个个像素点(pixel)所组成的,一般所说的显示器分辨率是1280x720就表示这个显示器水平方向有1280个像素,垂直方向上有720个像素。但是并非分辨率越高屏幕显示效果越好,还需要根据屏幕的大小来决定。也就是要看像素的密度(pixel density),这个指标就是DPI(Dots Per Inch)或者PPI(Pixels Per Inch),即英尺屏幕上像素或者是点的个数。

DPI/PPI

DPI = Dots Per Inch 
PPI = Pixel Per Inch

两个参数的区别就在于Dot和Pixel的区别,dot值的是显示器上每一个物理的点,而pixel指的是屏幕分辨率中的最小单位。这个两个难道会不一样么?会!当一个像素需要多于一个屏幕上的物理点来显示的时候dot就跟pixel不一样了。这个有另一个叫法叫做dppx(dot per pixel),即每个像素中有多少个点。大部分的显示器中一个像素即一个点,但目前一些比较好的屏幕和一些手机屏幕中dppx会大于1。比如说Mac Retina,iPhone,HTC One等。

相信大家都遇到过一些人的电脑屏幕,看上去总是那么傻大傻大的。就是因为他们把分辨率调的太低导致ppi变低了,让画面看上去那么的不协调。看下面两张图片,我在一个1366x768分辨率的显示器上把分辨率分别设置为1366x768和1024x768所显示的效果。

android像素密度可以任意设吗 像素密度dot_PPI

 

1024 x 768

android像素密度可以任意设吗 像素密度dot_屏幕尺寸_02

 

1366 x 768

但是大多是情况大家并不会把这两个名词分的那么清楚,所以如果这两个出现的时候基本上都表达的是同一个意思。即PPI(每英寸中有多少个像素)。

那这货怎么算出来的呢?公式如下:

$ DPI = \frac{\sqrt{height^2 + width ^ 2}}{inch}$

公式很简单,$ \sqrt{height^2 + width ^ 2}$ 是对角线上的像素个数,而屏幕尺寸就是对角线的长度。所以算出来就是每英寸有多少个像素。

坑爹的屏幕尺寸

很久以来都不知道为什么显示器的大小单位是英寸,这尼玛不是一个长度单位么怎么能用来表示一个二维的东西。后来才知道这时显示器对角线的长度。

这个坑爹之处是当你知道一个屏幕是几寸的时候你其实无法还原出来这个屏幕到底有多大,因为这只是一个对角线。宽屏和窄屏有可能是同一个尺寸但是他们的面积其实是不一样的。

研究了一下为什么屏幕尺寸是用这个单位。据说是因为历史原因,因为一开始的屏幕是CRT的球形屏幕,CRT屏幕的现实原理就是用电子枪打出高速的电子束打到显示屏上的荧光粉发光。电子枪的射击范围是一个圆,自然就用直径来表示大小。而之后显示器变成矩形以后其实内部依然是电子枪,所以就遗留下来这中屏幕尺寸的单位。

另外一个说法是说显示器厂商认为使用对角线长度当做单位可以让大家觉得显示器更大一点。。: )