android 资源匹配,Android资源匹配过程(二)

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

fec9700ea40a

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

假设某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/ 中的资源是默认可绘制资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值