加载中…
个人资料
行者无疆-超越
行者无疆-超越
  • 博客等级:
  • 博客积分:0
  • 博客访问:23,405
  • 关注人气:1
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

Android资源匹配算法

(2014-04-24 11:10:35)
标签:

android

it

分类: Android系统

当某种资源存在多个候选资源目录时,需要通过一种方式来找到最合适的资源。在Android的网站上提供了资源匹配的算法说明,让我们一起来学习。

下面我们通过一个实际的例子来学习这个算法的执行过程。假设res目录下存在着下列资源目录:

drawable/

drawable-en/

drawable-fr-rCA/

drawable-en-port/

drawable-en-notouch-12key/

drawable-port-ldpi/

drawable-port-notouch-12key/

同时假设有一台设备的配置如下:

Locale = en-GB

Screen orientation = port

Screen pixel density = hdpi

Touchscreen type = notouch

Primary text input method = 12key

通过算法筛选后,最终使用的资源目录是:

drawable-en-port.

系统进行选择依据的是下面的流程图演示的算法。我们依据这个算法来看看上面这个例子是如何得到最终的结果的。

Android资源匹配算法

第一步:去掉和系统配置冲突的项。

上面的例子中有两项冲突:

目录drawable-fr-rCA/ 和配置“Locale = en-GB冲突;目录drawable-port-ldpi/和配置“Screen pixel density = hdpi冲突。但是在配置限度符表里讲过,对于DPI类的限定符,并不要求资源项和它精确匹配,所以这里第一次不能去掉drawable-port-ldpi/

第二步:按顺序逐项检查配置限度符表,看是否有限定符存在于资源目录名中,如果存在,则去掉没有该限定符的目录。

1.        MCC-MNC项没有,继续

2.        语言项en存在,所以要去掉下面三项:

drawable/

drawable-port-ldpi/

drawable-port-notouch-12key/

然后只剩下三项了:

drawable-en/

drawable-en-port/

drawable-en-notouch-12key/

接下来,一直到“屏幕方向才又找到匹配的限定符port”。上面三项去掉不含port”的两项。最后就只剩下drawable-en-port/”。

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有