Android屏幕适配(三)适配文件的自动生成和系统适配

前面说了 dp、dpi、px、sp 的概念和计算,不同密度对应的分辨率,适配的方法。
怎么样去生成vaues文件夹下面的文件呢?

如果每个dpi文件夹都去手动写dimens.xml是一件很繁琐的事情,下面我们就用代码自动生成dimens.xml。


这里是贴上核心的代码,其实思路很简单,根据每个dpi各个比例去计算,比如我们是用1280*720 xhdpi 的手机去开发,那么在这个密度下面
<dimen name="dp1">1.0dp</dimen>,其他的dpi按比例去计算就可以了。
这里生成了 values-lddpi,values-mddpi,values-hddpi,values-xhddpi,values-xxhddpi,values-xxxhddpi
其实  values-lddpi(密度太小,过时480*320),values-xxxhddpi 都可以暂时不用去适配
下面是res文件夹下面各个dpi文件夹。


那么  values-mddpi,values-hddpi,values-xhddpi,values-xxhddpi 这四个密度就能适配好所有的时候屏幕了吗??答案是否定的,不要说所有的手机屏幕了,
就是比较主流的屏幕都不能适配。这里又不得不再次提到很多厂商会改分辨率的density,比如480*800的手机,标准对应的是hdpi,但是这个是在4.0intech,尺寸越大,密度就越小,所以我们还需要去适配比这个分辨率对应的密度低或高的手机屏幕。

480*800   hdpi   适配合适
480*800  mdpi   就会去读 mdpi的values文件,出现的结果就是你的屏幕尺寸大,但是你按照dpi适配换算的dp小,就会在原来的基础上缩小很多。怎么解决?
我们可以再建一个 values-mdpi-800x480 

那么同一款手机,有多个values满足适配的条件,系统是怎么去选择的呢?

系统适配文件的选择



还是上面的图,四个红点的地方代表接下来举例会涉及到的文件,

800*480  hdpi
先会去检测是否有分辨率+密度的values 也就是 values-hdpi-800*480,
没有去检测改密度的文件,values-hdpi
没有去检测改分辨率的文件  values-nodpi-800*480,(有的会去读values-800*480)
没有去读values
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值