Android手机机型众多,分辨率和屏幕大小都很多,导致了Android生态环境的碎片化现象越来越严重。Google公司为了解决分辨率过多的问题,在Android的开发文档中定义了px、dp、sp,方便开发者适配不同分辨率的Android设备。
屏幕参数:
屏幕大小:指屏幕对角线的长度,通常使用“寸”来度量,例如5.0寸手机、6.0寸手机等。
分辨率:分辨率是指手机屏幕的像素点个数,例如720*1280就是指屏幕的分辨率,指宽有720个像素点,而高有1280个像素点。
PPI:每英寸像素(Pixels PerInch)又被称为DPI(Dots Per Inch)。它是由对角线的像素点数除以屏幕的大小得到的,通常达到400PPI就是非常高的屏幕密度了。
系统屏幕密度:
每个厂商的Android手机具有不同的大小尺寸和像素密度的屏幕。Android系统如果要精确到每种DPI的屏幕,那是不可能的。因此系统定义了几个标准的DPI值,作为手机固定的DPI,如下图所示。
|
密度 |
ldpi |
mdpi |
hdpi |
xhdpi |
xxhdpi |
xxxhdpi |
|
密度值 |
120 |
160 |
240 |
320 |
480 |
640 |
|
分辨率 |
240*320 |
320*480 |
480*800 |
720*1280 |
1080*1920 |
3840*2160 |
px : 其实就是像素单位,比如我们通常说的手机分辨列表800*400都是px的单位
dp : 虚拟像素,在不同的像素密度的设备上会自动适配
dip: 同dp
dp是虚拟像素,在不同的像素密度的设备上会自动适配,比如:
在320x480分辨率,像素密度为160,1dp=1px
在480x800分辨率,像素密度为240,1dp=1.5px
计算公式:1dp*像素密度/160 = 实际像素数
ppi的运算方式是:
PPI = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数
dp:Density-independent pixels,以160PPI屏幕为标准,则1dp=1px,
dp和px的换算公式 :
dp*ppi/160 = px。比如1dp x 320ppi/160 = 2px。
sp:Scale-independent pixels,它是安卓的字体单位,以160PPI屏幕为标准,当字体大小为 100%时, 1sp=1px。
sp 与 px 的换算公式:sp*ppi/160 = px
总结得出:
px = dp*ppi/160
dp = px / (ppi / 160)
px = sp*ppi/160
sp = px / (ppi / 160)
本文详细解析了Android手机屏幕参数,包括屏幕大小、分辨率、PPI等概念,并介绍了Android系统如何通过dp、sp等单位解决不同设备屏幕适配问题。
1686

被折叠的 条评论
为什么被折叠?



