屏幕适配基础(为什么要做屏幕适配?)

屏幕参数

屏幕大小

屏幕的对角线的长度,通常使用 "英寸"来度量,比如5.5英寸手机,5英寸的手机

分辨率

分辨率是指手机屏幕的像素点个数,比如1080*1920,是指宽宥1080个像素点,高有1920个像素点

DPI(Dots Per Inch)

每英寸像素数,也可以叫做PPI(Pixels Per Inch),可以理解为屏幕的像素密度,它是由屏幕对角线的像素点数除以对角线的的长度(屏幕大小得到)

通常一部手机分辨率是宽 * 高 ,屏幕大小以对角线长度英寸来计;

比如1080*1920分辨率,尺寸是5.5英寸的手机的dpi如下;5.5英寸的长度上面有大约2203px个像素点,所以dpi就是2203/5.5

比如下图所示:

Android 1080px等于多少dp_屏幕密度

Android 1080px等于多少dp_屏幕密度_02

手机屏幕密度,因为不同手机分辨率不同,尺寸不同,导致手机屏幕的密度值(dpi)有各种各样的,Anroid要做到每一种屏幕的dpi的值,基本上是不可节能,如果真要那样的话,那么我们一张图片可能要有几百个dpi适配,也就不是目前几个mipmap-hdpi,mipmap-mdpi,mipmap-xhdpi,mipmap-xxhdpi,mipmap-xxxhdpi文件专门放置几种特定dpi的图片文件夹,要做到精确,必须要有几百,甚至还多,Android碎片化很严重的,这个问题解决起来是不现实的。
下面列出android中定义的几种标准的dpi值

屏幕密度dpi

ldpi

mdpi

hdpi

xdpi

xxdpi

xxxdpi

屏幕密度dpi值

120

160

240

320

480

640

每种屏幕密度下常规分辨率

240*320

320*480

480*800

720*1280

1080*1920

2160*3840

dp和px的换算

1dp=0.75px

1dp=1px

1dp=1.5px

1dp=2px

1dp=3px

1dp=4px

为什么要做适配?

原因很简单,就是同样的dp在不同手机上面显示的效果根本不一样,为什么这么说?
比如, 拿160 dp 来说:
在分辨率 320 * 480,dpi =160 ; 160dp = 160 * (160/160) * 1px =160px; 占屏幕比率 160/320 =0.5;
在分辨率 480 * 800,dpi=240 ; 160dp = 160 * (240/160) * 1px=240px; 占屏幕比率 240/480 =0.5
在分辨率 720 * 1280,dpi =320 ; 160dp = 160 * (320/160) * 1px =320px; 占屏幕比率 320/720 =0.44;
在分辨率 1080 * 1920,dpi=480 ; 160dp = 160 * (480/160) * 1px=480px; 占屏幕比率 480/1080 =0.44
在分辨率 2160 * 3480,dpi =640 ; 160dp = 160 * (640/160) * 1px =640px; 占屏幕比率 640/2160 =0.29;
从上面几种标准的dpi来看,同样的dp,在不同手机的显示上面还是会有差别,同样的设计有的占一半,有的显得很小,这样对用户来说很突兀,
更别说那些五花八门的手机尺寸和 dpi了.