前言:
之前屏幕适配这个问题一直困扰着我。
1.为什么要进行适配,当然这个问题有些白痴,对于开发者而言肯定是遇到了此类问题才会寻求答案。
2.现在应用比较广泛的适配方案有哪些。
3.哪一种是最好的。我要用最高效,最安全,最简便的方案。
1.为什么要进行适配
我们不仅要会适配,其实更应该清楚为什么适配,那么多适配方案该怎么选?当然就要搞清楚这个问题。
分辨率碎片化
什么是分辨率?就是讲解分辨率之前,我们要明白一个概念。在我们手机上呈现的一条线,一个面,一张图像都是由最小的单位像素(px)来表示的.。假如分辨率1920*1080 就代表竖向1920个像素,横向1080个像素。至于Android究竟有多少种分辨率的屏幕,我不知道,只知道有很多种。
尺寸碎片化
屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米,
比如常见的屏幕尺寸有4.2、4.7、5.0、5.2、5.5、6.0等。
![](https://img.haomeiwen.com/i3110367/38a572b3ccb9d4ed.png)
dpi
上图已经说明dpi了,就是单位尺寸内的像素数量dpi=px/inch(尺寸),dpi数量越大说明单位内像素密度越大,显示越细腻。
dp
dp=dpi/160。为什么要除以160?我也不知道。从dpi的计算公式上可以看出dp能够根据不同屏幕(分辨率/尺寸也就是dpi)获得不同的像素(px)数量。这是Android最原始的适配方案。
Density
这个是指屏幕上每平方英寸(2.54 ^ 2 平方厘米)中含有的像素点数量。
这些概念我大概梳理了一下,如果不清楚,请仔细再查阅相关文档。
看完上面概念就会有疑问?如果我用px直接展示边距或者控件大小,分辨率不同的屏幕,分辨率越高的话我的实际大小就会变小,那我用dp就好了。是的,dp就是最原始的适配方案,但是如果两块屏幕尺寸一样,分辨率差一倍呢?density就会差一倍,这样即使你使用了dp作为单位,view的大小在不同手机中还是会有尺寸的变化。
2.都有哪些适配方案呢
1.宽度限定符适配
2.鸿洋大神的AndroidAutoLayout
3.百分比
第一种呢就是穷举市面上所有的手机分辨率,设定一个基准利率,其他分辨率都根据这个基准分辨率来计算,在不同的尺寸文件夹内部,根据该尺寸编写对应的dimens文件。
这个方案呢,容错率比较差,你必须找到所有的分辨率的手机,造成apk的体积庞大。
鸿洋大神的AndroidAutoLayout其实就是百分比,至于为什么要分开说呢?因为这个库已经不维护了,如果你要自己搭一个这样的库也是一个思路。
第4种方案它是通过修改density值来实现。公式是当前设备屏幕总宽度(单位为像素)/ 设计图总宽度(单位为 dp) = density。特点呢就是开发快,稳定性有所欠缺。
第五种方案。这种机制和上文提到的宽高限定符适配原理上是一样的,都是系统通过特定的规则来选择对应的文件。可以看作是升级版,升级的地方就是减小了导入文件的数量,从而减小了apk的体积,而且利用dp来适配,容错率更高。相比于第四种也更加稳定。
还有其他方案就不一一列举了,没有最好的方案,只有最合适。至于更详细的原理和使用,已经附上链接,点击即可查看。实在是不想码字了。见谅。
网友评论