Android屏幕适配

358 阅读2分钟

推荐阅读

https://mp.weixin.qq.com/s/d9QCoBP6kV9VSWvVldVVwA

一、名词

px = density * dp;

density = dpi/160;

像素密度:dpi =sqrt(宽的平方 + 高的平方)/屏幕尺寸;

屏幕尺寸:即对角线屏幕的大小,单位为英寸。

px = dp * (dpi / 160);


传统dp适配的缺点

dp在图片适配时还是存在局限性的。

比如:UI设计图是按照屏幕宽度360dp来设计的,那么在1920*1080上,屏幕宽度其实为1080/(440/160) =392.7dp,440是根据公式算出来的dpi。这种情况下,使用dp是无法在不同设备上显示为同样效果的。同时在设备屏幕宽度不足360dp时,会显示不全。

探索新的适配

1、支持以宽或高(不变动的)一个维度去适配,使该维度上和设计图纸一致。

2、突破口:px = dp * density;如果想要保证在所有的设备上算出的px都正好是屏幕的宽度。

那么适配后的density = 设备真实的宽(单位px)/360,把计算好的density在系统中修改一下。

字体大小修改:通过计算之前scaledDensity和density的比获得现在的scaledDensity

适配方法 dimens适配

1、需要选定一个屏幕分辨率基准值。

例如这里我们以1280x720的屏幕分辨率为基准那么values-1280x720文件夹下面的dimens.xml文件如下:


那么values-1920x1080文件夹下面的dimens.xml文件就应该是这样的:


2、生成dimens文件

(1)dimens生成器

生成器的使用:



注意:该生成器得到的dimens文件的单位是dp,我们需要的是px作为单位,只需要把saveDimens.xml文中的内容做一次查找替换就可以了。


(2)程序

参考:https://blog.csdn.net/lmj623565791/article/details/45460089