Android 适配-最小宽度限定符 values-sw"xxx"dp 适配。
1、以320dp作为最小宽度生成其它最小宽度资源。
320dp基准:
2、生成其它最小宽度资源,比如想得到400dp最小宽度的,则用400/320*(1dp-320dp)。
320dp最小宽度基准:
计算出4000dp最小宽度基准:values-sw400dp
得到values-sw400dp的资源,如果需要其它的资源,进行计算之后生成即可。
3、匹配最小宽度限定符的原理。
小端屏幕分辨率 / 密度(density),得到的结果,和定义的最小宽度资源匹配。比如宽高1080x1920或者是宽高1920x1080,都是使用像素小的那边1080计算。
在下图中,可以知道最小宽度是1080, 密度缩放比(density)是2.625,则1080/2.625=411.42,比定义的values-sw400dp大,而比定义的values-sw520dp要小,则最终会匹配到values-sw400dp。注意计算出的值需要大于定义的某个最小宽度,才能匹配,如果小于则不会匹配,这是会默认使用values的,所以在该文件夹里需要放一份,不然APP会闪退。
匹配对之后,就直接取相应值,然后再结合Android内部缩放机制,进行缩放。比如匹配到的是values-sw400dp,我设置android:layout_width="@dimen/size160",会去取values-sw400dp下对应的资源
4、在同时适配手机和平板时,其效果更佳明显,比如1080*1920的平板,其密度可能是1,那么1080/1=1080,则匹配最小宽度1080,只需要生成一份values-sw1080dp的资源文件即可,取值后,因为密度是1,直接显示所取值的大小,这时候1dp=1px.