上一篇文章了解了Android资源标签属性及优先级 后,下面我们来看资源的具体匹配规则。

下面以一个实际例子作为说明。

假设某App中的drawable资源有如下几种选项:

drawable/

drawable-en/(英语)

drawable-fr-rCA/(法语和加拿大地区)

drawable-en-port/(竖屏)

drawable-en-notouch-12key/(不带触摸屏并具备12键的键盘)

drawable-port-ldpi/(竖屏低密度屏幕)

drawable-port-notouch-12key/(竖屏,不带触摸屏,12键键盘)

假设设备当前设备配置为:

Locale=en-GB

Screen orientation=port

Screen pixel density=hdpi

Touchscreen type=notouch

Primary text input method=12key

匹配过程分为两个阶段:

第一阶段:筛选掉与设备当前配置不相符的资源选项。

在淘汰过程中,对于资源选项里没有显示写出来的配置,不作为评判标准;而资源选项里显示写出来的,符合当前配置的可以通过筛选,否则直接淘汰。

特别注意,Android 明确规定,Density标签不在第一阶段的淘汰范围内。

经过筛选,结果如下:

drawable/

drawable-en/

drawable-fr-rCA/(淘汰)

drawable-en-port/(竖屏)

drawable-en-notouch-12key/

drawable-port-ldpi/(作为特例保留下来)

drawable-port-notouch-12key/

第二阶段:选择最优解

经过第一阶段筛选后,剩余的选项都是完全符合设备当前配置要求的(除了特列外)。第二阶段的主要任务就是在剩下的资源选项中按照优先级顺序筛选出一个最优的选项。

第一步,先选择MCC,MNC来考察,发现没有选项包含这个标签。

第二步,继续选择语言与地区标签。由于当前配置是en-GB,所以没有带这个标签的选项被排除。

经过筛选,结果如下:

drawable/(淘汰)

drawable-en/

drawable-fr-rCA/(淘汰)

drawable-en-port/(竖屏)

drawable-en-notouch-12key/

drawable-port-ldpi/(淘汰)

drawable-port-notouch-12key/(淘汰)

接下来的步骤中我们重复利用这一规则,直到筛选出符合条件的选项。此例中,最终只剩下如下选项:

drawable-en-port/(最终匹配成功)

注意:应用使用的每种资源类型时候,需要提供默认资源。这里的默认资源指未标记配置限定符的资源。例如,drawable/ 中的资源是默认可绘制资源。

android 资源匹配,Android资源匹配过程(二)相关推荐

  1. Android屏幕适配-资源文件夹命名与匹配规则

    Table 2. Configuration qualifier names. Configuration Qualifier Values Description 说明:本文档目的为分析androi ...

  2. Android屏幕适配 - 屏幕基础理论知识笔记;res资源文件命名与匹配规则

    Android开发中,屏幕适配是十分让人头疼的问题,最近打算好好研究下适配的解决方案,主要参考官方文档及论坛上大神们的方法(我崇拜的鸿洋大神等):首先,先熟悉点基础知识. 常用单位 px:pixel  ...

  3. android图标错误的是什么意思啊,Android错误:找不到与给定名称匹配的资源(在icon处,值为@drawable/icon) - Android - srcmini...

    本文概述 将旧版本的项目导入Android Studio时, 似乎会导致此错误, 然后Android Studio会将gradle版本更新为最新版本, 从而导致该错误.对于具有旧版本gradle的Co ...

  4. android:mimetype 自定义,Android: Intent匹配及mimeType匹配,这一篇就够了!!

    activity的启动分为显式调用和隐式调用.显式调用需要明确指定组件的信息,来完成调用..隐式调用是通过匹配目标组件的IntentFilter完成的.一个组件可以设置多个IntentFilter来匹 ...

  5. android多屏幕适配资源生成,android – 多屏幕适配相关

    1.基本概念 屏幕大小(screen size) – 屏幕的实际大小,用屏幕对角线长度来衡量(比如3.4寸,3.8寸).android把屏幕分为以下4种:small,normal,large,extr ...

  6. Android开源项目及资源查速表

    本文为转载,原作者:Loading 大写加粗的指出原文地址:http://www.androidchina.net/7034.html 我只是小小的搬运工哦 CatRuan(阮妹子) 联系方式:QQ: ...

  7. android 指定资源id,Android平台下如何固定资源ID

    文章转自半导体人社群芯方式 [QUESTION] 如何固定资源ID [ANSWER] 一般情况,同一个资源,因为程序的不停修改,不同版本编译后,这个资源产生的ID可能会变化.对于一个独立的apk来说, ...

  8. Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组

    一. Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, ...

  9. 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组

    . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19913755 . 一. Android资源文件简介 1 ...

最新文章

  1. netty reactor线程模型分析
  2. U3D中物体的渲染顺序
  3. 一文了解 ng-template, ng-content, ng-container, 和 *ngTemplateOutlet的区别
  4. python3 sleep 并发_python异步编程之asyncio(百万并发)
  5. 阿拉伯语排版设计_针对说阿拉伯语的用户的测试和设计
  6. Ubuntu 16.04 安装mysql5.7
  7. 用SQL产生连续的自然数
  8. Sublime Text4添加配色主题
  9. 业务与技术相结合,双活体系支付架构建设
  10. ubuntu20.04 安装 Qt5.12步骤
  11. easyUi load方法重新加载表单的数据
  12. thinkpad T480安装WIN7系统NVM固态硬盘+INTEL HD620显卡
  13. 你这个视频背景太假了?
  14. 一元二次方程的解法(Python语言)
  15. 人工智能兴起的条件_跟我说规矩。 AI受虐狂的兴起
  16. 关于ONION/Wncry勒索病毒
  17. 数字信号处理3个作业-----作业3自相关与Burg求解AR模型系数以估计其功率谱
  18. w ndows正常启动,正常运行WNDOWS所需的文件已被替换成无法识别的版本.要保持系统的稳定,必须还原这些文件的原有版本.doc...
  19. Git runner安装
  20. 数据库表内容复制,表格复制。

热门文章

  1. Anaconda 环境下 对Tushare进行测试
  2. 显示point data的时均值注意事项
  3. java项目配置常见问题
  4. GIF动画,菊花动画,UIView动画,CoreAnimation动画(CALayer动画)的用法
  5. C++静态库与动态库(简介)
  6. 经典网页设计:12个简约风格的网站作品
  7. Windows8应用生命周期 Metro Style Apps Lifecycle
  8. c:if判断参数是否为空
  9. Visual Studio 2010 第一时间体验旗舰版
  10. Python将是人工智能时代的最佳编程语言