文章目录
- dp 的计算公式
- dp 计算的例子
- dp 的来历
- 究竟什么是 dp
dp 的计算公式
dp 是安卓 UI 开发中最常见的单位之一,它有一个别名 dip。dp 与 dip 是同一个意思。dp 指的是什么呢?官方的解释是 device independent pixels(设备独立像素)。这是一个很抽象的说法,为此,官方还以定量的形式给出了它的计算公式:
像素
,dpi 的单位是 像素/英寸
)
dp 计算的例子
举个例子,如果一台设备的分辨率是500 × 1200,对角线长度是 4.0625 英寸。那么该设备的 dp 与 px 的关系如下:
这台设备的分辨率是500 × 1200,说明它的对角线的像素为
50
0
2
+
120
0
2
=
1300
\sqrt{500^2+1200^2}=1300
5002+12002=1300 像素,于是该设备的 dpi 为
1300
÷
4.0625
=
320
1300\div4.0625=320
1300÷4.0625=320 像素/英寸
。单位 dp 为
160
÷
320
=
0.5
160\div320=0.5
160÷320=0.5 像素。
dp 的来历
但笔者不得不指出的是,很多人喜欢把简单问题深奥化,把数学问题抽象化。实际上 dp 这个概念甚至比 dpi 还好理解。但在这之前,需要先介绍一下 dp 是怎么来的。
在相同尺寸的设备上,显示同一个图片文件,在自然情况下,dpi 越高的设备,该图片显示的物理尺寸越小。为什么会这样呢?原因是图片只是记载着各个像素点的颜色值。在不加处理的情况下,需要显示图片中所有的像素点。在这种情况下,dpi 很高的设备,不需要很大的尺寸就可以显示完图片中所有像素点,因此,dpi 越高的设备,该图片显示的物理尺寸越小。
可是这样就带来问题了,如果图片很小的话,势必影响观感,这样就会导致 dpi 越高的设备的阅读体验越差,这种使用像素值作为长度单位来显示显然是不对的。
于是,为了使同一个图片文件,在不同 dpi 的设备都可以美观的显示,于是就有了 dp 这个概念。
究竟什么是 dp
凡是涉及数学公式的内容,都应该从数学物理上来理解。那么,最基本的,dp 的量纲是什么呢?从上面的公式中很容易推导,dp 的量纲是英寸。而且,可以进一步发现,对于对角线像素为 1 像素,dpi 为 1 像素/英寸
的设备,其对角线的 dp 值为 160。而实际上,对角线实际的长度值应为 1 英寸。这就是说,dp 只是一个绝对的长度单位,且 1 dp =
1
160
\frac{1}{160}
1601 英寸。由于 1 英寸 = 2.54 厘米,因此 1 dp =
1
160
\frac{1}{160}
1601 英寸 = 0.015875
厘米,160 dp = 1 英寸 = 2.54 厘米。
很多的手机的尺寸大概是 7 cm × 16 cm。因此,200 dp 大概就是该手机竖屏时水平方向一半的长度,读者可以自行试试。
因此,正如笔者前面所说,实际上 dp 这个概念甚至比 dpi 还好理解。dp 只是一个与设备与关的绝对长度单位,不要故弄玄虚把它弄得非常深奥。