2018-09-04

关于安卓加载不同形式values文件夹优先级的探究


一.导入

我们大家都知道,安卓在加载values文件的时候。会根据屏幕的尺寸大小自动寻找合适的values文件夹加载,而values文件夹可能是: values,values-?dpi,values-分辩率x分辩率(用于px值屏幕适配),values-sw?dp(用于dp值屏幕适配)这几种形式。那么这几种形式的加载优先级到底是怎样的呢?

二.探究

1.用于测试的手机是小米6手机,分辨率为1080x1920。为了验证测试结果,在Activity加载的时候打印一下日志,代码如下:

图1

这行代码的意思是加载values文件夹中dimen里边的dp值,并转换成像素打印出来

2.创建不同形式的values文件,如下图:

图2

3.测试开始!

第1次运行,直接报错,提示values-sw359.5dp: Error: Invalid resource directory name。这行提示告诉我们

values-sw这种形式后边不能跟小数的dp值。

把values-sw359.5dp文件夹删除,进行第2次测试。测试结果是加载了values-sw360dp中的dp值

把values-sw360dp文件夹删除,进行第3次测试。测试结果是加载了values-sw359dp中的dp值

把values-sw359dp文件夹删除,进行第4次测试。测试结果是加载了values-xxhdpi中的dp值

把values-xxhdpi文件夹删除,进行第5次测试。测试结果是加载了values-xxxhdpi中的dp值

把values-xxxhdpi文件夹删除,进行第6次测试。测试结果是加载了values-xhdpi中的dp值

把values-xhdpi文件夹删除,进行第7次测试。测试结果是加载了values-hdpi中的dp值

把values-hdpi文件夹删除,进行第8次测试。测试结果是加载了values-1080x1920中的dp值

把values-1080x1920文件夹删除,进行第9次测试。测试结果是加载了values中的dp值

把values文件夹删除,进行第10次测试。测试报找不到资源错误

三.结论

当 values,values-?dpi,values-分辩率x分辩率,values-sw?dp这几种形式都存在的时候

1.会根据手机的分辩率大小先加载values-sw?dp这种形式的文件夹(这种文件夹形式用于dp适配,不懂的自行百度),如果找不到适合的文件夹会向下找不大于我们手机宽度dp值的文件夹,并且dp值不能为小数

2.如果values-sw?dp找不到适合的文件夹,则会找?hdpi这种形式的文件夹。因为我的手机的dpi值是480,因此先加载了xxhdpi,如果不存在xxhdpi则会向更高分辩率的dpi文件夹中找,如果更高分辩率的dpi文件夹找不到那么会往低分辨率的dpi文件夹中一级一级向下找

3.如果values-sw?dp和?hdpi都没有合适的文件夹的话则会加载values-分辩率x分辩率的文件夹

4.如果values-sw?dp和?hdpi和values-分辩率x分辩率都找不到的话最终会找values文件夹

总结一句话:优先级是values-sw?dp>?hdpi>values-分辩率x分辩率>values

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 需求和设计目标 Windows NT设计小组在项目开始之初选择了下面的设计目标:扩展性、可移植性、可靠性和健壮...
    kotw_zjc阅读 2,444评论 0 0
  • 今天主题:“查找与替换的不同玩法“ 1.基本用法 2.进阶用法 3.制作目录 4.模糊查找与替换 5.精确查找与替...
    晨E战到底阅读 1,328评论 0 0
  • 1.因为你没有原则 最近发生一件极小却也闹心的事.1月6号,移动致电,能上门免费赠送儿童智能手表.鬼使神差,我同意...
    007曾瑞英阅读 3,345评论 0 3
  • 谁创造了流行?流行的奥秘何在?如何才能创造流行?这三个关于流行的问题who、why和how,是关于流行的3W难题。...
    小马锅过河阅读 3,800评论 1 1
  • 无论我多么勇敢多么强烈的追求 也掩饰不了我的自卑 我知道我遇到了对的人 可是时间不对地点不对 我讨厌相爱的人不能在...
    未命名的青春阅读 2,910评论 0 0

友情链接更多精彩内容