文章目录
一、概念
- px : pixels(像素)
- dp/dip : device independent pixels(设备独立像素)
- sp : scaled pixels(放大像素)
- ppi : pixels per inch(像素密度,所表示的是每英寸所拥有的像素数量)
- dpi : dots per inch(每英寸的点数)
一般我们可以在网络上搜寻到某一款手机的配置信息,可以得到分辨率(px),尺寸(inch)以及ppi。
1.px(像素)
一个像素通常被视为图像的最小的完整采样。通常所说的分辨率比如1280 * 720,指的就是可以显示1280 * 720个像素。
2.dp(设备独立像素)
这个和设备硬件有关,不同设备有不同的显示效果。在做项目时,为了适配市场上繁多的手机分辨率,建议使用dp。
3.sp(放大像素)
SP 全称是 Scale-independent Pixels,用于字体大小,其概念与DP是一致的,也是为了保持设备无关。
4.英寸(Inch)
手机5.5英寸不是指长宽,而是指斜对角线长5.5英寸。
5.ppi(图像的采样率)
Pixels Per Inch,每英寸对角线上所拥有的像素(pixel)数目。
ppi的计算公式为:
用长跟高的像素数计算出对角方向的像素数(直角三角形),然后再用对角的像素数除以屏幕尺寸就是ppi了。
PPI的例子:4.3英寸、分辨率1280*720
P P I = √ ( 128 0 2 + 72 0 2 ) / 4.3 = 341.5359 … … ≈ 342 PPI=√(1280^2+720^2)/4.3=341.5359……≈342 PPI=√(12802+7202)/4.3=341.5359……≈342
注意:
ppi只由分辨率和尺寸确定唯一的值。
ppi一样,图像显示的效果就一样。将ppi小的设备显示的东西放到ppi大的设备上,东西就会显小。
6.dpi(打印分辨率)
Dots Per Inch,dpi=图像每英寸长度内的像素点数。
屏幕密度与dpi密切相关,密度越大,每英寸内容纳的点数就越多。
现在,大家说的dpi=ppi,计算方式也一致。
区别只是,ppi常用于手机显示方面,dpi常用于打印输出方面。
二、换算
1.px和dp
p x = d p ∗ ( d p i / 160 ) px=dp*(dpi/160) px=dp∗(dpi/160)
2.dpi=ppi
例子:配置模拟器
目标机型为分辨率1920 * 1080,ppi是401,尺寸是5.5英寸。
我们使用dp和sp作为资源单位。
(1)模拟器的dpi可以任意指定
那么只需要将模拟器的分辨率也设置为1920 * 1080,尺寸是5.5英寸,dpi=320。
(2)模拟器的dpi是一个定值
因为不能设定和目标机型同样的dpi,那么我们只能通过调整屏幕分辨率大小在不同dpi机型上达到同样的效果。
比如:模拟器的dpi只能是320dpi
设原来的屏幕的长为a px,宽为b px,新屏分辨率为ka和kb。
a
2
+
b
2
5.5
=
401
,
(
k
a
)
2
+
(
k
b
)
2
5.5
=
320
\dfrac{\sqrt{a^2+b^2}}{5.5}=401,\dfrac{\sqrt{(ka)^2+(kb)^2}}{5.5}=320
5.5a2+b2=401,5.5(ka)2+(kb)2=320
k = 320 ÷ 401 = 0.798 k=320\div401=0.798 k=320÷401=0.798
新屏长:
k
a
=
0.798
×
1920
=
1532
,
k
b
=
0.789
×
1080
=
852
ka=0.798\times 1920=1532,kb=0.789\times 1080=852
ka=0.798×1920=1532,kb=0.789×1080=852
但不对。
系数为啥是
k
2
k^2
k2
k
2
a
=
0.638
×
1920
=
1226
,
k
b
=
0.638
×
1080
=
689
k^2a=0.638\times 1920=1226,kb=0.638\times 1080=689
k2a=0.638×1920=1226,kb=0.638×1080=689