概念:
1.屏幕尺寸:手机屏幕对角线长度,单位一般为inch(英寸,")。
2.屏幕分辨率:手机屏幕中的像素点个数,一般表示为 纵向像素点px*横向像素点px,例如 1920*1080px。
3.勾股定理:a2 + b2 = c2
计算过程:
1.比如分辨率为480 * 320,则长宽比为1.5 : 1。
2.比如屏幕尺寸为3.6”,则根据勾股定理有:
高2 + 宽2 = 3.62,
又因为:
高 = 1.5 × 宽,
代入上式,有:
宽2 + 2.25 × 宽2 = 12.96,
得出:
宽 = (12.96/3.25)1/2 = 1.9969
3.宽为320px,分布在1.9969”上,因此密度为320 / 1.9969 = 160.2467
4.因此此密度约为mdpi的密度。
有关屏幕密度的一段话:
文字图片效果的显示与屏幕实际尺寸无关,
取决于 ROM 指定的像素密度与屏幕真实像素密度之间的关系。
编译 ROM 时会指定像素密度的。
只能指定为以下几个值:
- ldpi: 120ppi (mdpi x 0.75)
- mdpi: 160ppi (android 基准 ppi, 1dp=1px)
- tvdpi: 213.333ppi (xhdpi / 1.5)
- hdpi: 240ppi (mdpi x 1.5)
- xhdpi: 320ppi(mdpi x 2)
- xxhdpi: 480ppi(mdpi x 3)
在生产 android 手机的时候,应当尽量选择与这些 dpi 相接近的像素密度。
屏幕的真实 ppi 如果完全等于这几个指定的 ppi,并且被指定为确定的 ppi,那么相同 sp 的字体,最终显示的物理大小相同。
但如果使用的不是以上一个标准 ppi,那么最终显示的效果与真实大小有差异,具体计算方式如下:
假如屏幕 A 是 440ppi 的,ROM 被指定为 480 ppi,那么屏幕显示的实际上是 480/440=1.09 倍的真实大小。
而另外一块屏幕 B,假定是 340 ppi,ROM 被指定为 320 ppi,那么屏幕显示的实际上是 320/340=0.94 倍的真实大小。
因为 0.94 < 1.09,所以,这块 340ppi 的屏幕 B,实际的字体显示尺寸反而比 440ppi 的屏幕 A 更小。
假定有一块屏幕 C,像素密度是 280 ppi,ROM 被指定为 320 ppi,那么屏幕显示的实际上是 320/280=1.14 倍的真实大小。
因为 1.14 > 1.09 ,这块 280ppi 的屏幕 C,实际的字体显示尺寸比 440ppi 的屏幕 A 更大。
至于手机的屏幕的物理尺寸,它只决定了总共含有多少个 sp,但不决定每个 sp 的大小。决定每个 sp 大小的是手机屏幕的真实像素密度,
以及这款 ROM 被编译时指定的像素密度(对 android 应用程序来说,像素密度只有指定的那几个)。