Android 适配-最小宽度限定符 values-sw“xxx“dp 适配

Android 适配-最小宽度限定符 values-sw"xxx"dp 适配。

1、以320dp作为最小宽度生成其它最小宽度资源。

320dp基准:<dimen name="size320">320dp</dimen>  存放到默认values文件夹中。

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下对应的资源<dimen name="size160">200.0dp</dimen>,相当于实际给的值是200dp,最后就使用通常dp单位的显示机制了。这样子在各个手机分辨率下显示的大小比例,比直接使用dp单位,匹配的更好。

 

 

4、在同时适配手机和平板时,其效果更佳明显,比如1080*1920的平板,其密度可能是1,那么1080/1=1080,则匹配最小宽度1080,只需要生成一份values-sw1080dp的资源文件即可,取值后,因为密度是1,直接显示所取值的大小,这时候1dp=1px.

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值