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
怎么样去生成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
相关文章推荐
- android 事件分发机制,最简单详解
- intellij idea (Android studio )外部程序 打开某扩展名(格式)
- 这是我第一篇文章,不谈技术层,只谈Android发展
- Android Tombstone/Crash的log分析和定位
- Android的jni下c与java数据互传测试代码
- 生产者-消费者模型在Android开发中的应用
- Android Studio 2.1中的instant run功能 介绍
- Android Studio Gradle 对应的下载目录
- Android端手机测试体系
- 根据时间戳判断是星期几
- Android资源文件简介
- android webview中调用了js的混淆
- Android下拉刷新上拉加载控件,对所有View通用!
- Android Studio 优秀插件汇总
- Android自定义View之继承TextView绘制背景
- Android xml实现animation的4种动画效果实例代码
- Android 地址选择器,实现省市区三级联动
- 实验五 迭代法解线性方程组与非线性方程(android)
- Android使用EventBus
- android获取根View的方法