您的位置:首页 > 移动开发 > Android开发

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

2016-05-25 10:37 645 查看
前面说了 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: