Android系统如何找到最匹配的资源文件的

  次阅读 作者:智能小宝 来源:互联网 2016-01-14 11:06 我要评论(0)

当你需要一个资源文件时,Android系统会在运行时根据当前设备的配置信息从你提供的资源中选择一个文件。为了呈现出Android系统是如何选择一个资源文件的这个流程,假定下面的每个drawable目录包含了相同的图片元素的不同像素版本:

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

通过比较设备的配置信息和可用的资源文件,Android系统从目录drawable-en-port中选择了图片资源。

系统选择出最佳匹配资源文件的算法思路如下:

1.首先排除那些与设备的配置信息相矛盾的资源文件。

drawable-fr-rCA/ 目录被排除掉, 因为它跟设备的信息 Locale:en-GB 相矛盾。

drawable/

drawable-en/

drawable-fr-rCA/

drawable-en-port/

drawable-en-notouch-12key/

drawable-port-ldpi/

drawable-port-notouch-12key/

注意例外: 屏幕像素密度也是一个限制条件,如果还有目录没有被排除。 即使设备的屏幕密度是hdpi的, drawable-port-ldpi/目录不会被排除,因为每一个屏幕密度在这里被认为是一个点。 更多有用的信息请参考文档:Supporting Multiple Screens 。

2.从列表中 (table 2)挑选(下一个)最高优先级的匹配项,进行匹配。

3.是否没有资源文件目录包含这个限制条件?

o如果没有, 返回第2步 ,同时看看下一个限制条件。在上面的例子中,很显然是 没有 ,因此要循环到 语言 这个限制条件是才会遇到下一个限制条件。

o如果有, 则转到第4步。

4.排除那些没有包含限制条件的资源文件目录。在上面的例子中,系统会排除所有不包含 语言 这个限制条件的资源文件目录。

drawable/

drawable-en/

drawable-en-port/

drawable-en-notouch-12key/

drawable-port-ldpi/

drawable-port-notouch-12key/

注意例外: 如果限制条件是屏幕像素密度, Android系统会选择跟设备的屏幕密度最相近的那一个。 通常, Android 系统更倾向于缩小一个较大的源图片而不是放大一个较小的源图片。参考 Supporting Multiple Screens。

5.返回重复执行 2, 3 和4 步,直到仅有一个资源文件目录。在上面的例子中, 屏幕方向 是下一个需要比较的限制条件.。因此,排除那些没有指定屏幕方向的资源文件目录。

drawable-en/

drawable-en-port/

drawable-en-notouch-12key/

这样剩下的目录就只有drawable-en-port这一个了。

因为获取每个需要的资源文件的时候都要执行这个过程,所以需要进一步优化系统的一些不足的地方。 其中一个是,一旦知道了设备的配置信息后,系统会首先排除那些没有匹配项的资源文件目录。 例如, 如果设备配置信息中的 语言 是 英语 ( en ),则不要将那些包含了 语言 这个限制条件但却是其他语言信息的资源文件目录添加到待匹配的资源池中。尽管这样可能会留下那些没有 语言 这个限制条件的资源目录。

对 屏幕尺寸 这个限制条件进行匹配时,如果没有一个更好的资源文件时,系统会使用那些为比当前屏幕小的屏幕设计的资源文件 (例如,如果需要,一个large-size尺寸屏幕的设备会使用normal-size尺寸屏幕的资源文件)。但是,如果可以选择的资源文件所对应的屏幕尺寸都比当前屏幕的尺寸还大,此时系统不会使用这些资源文件,同时如果没有其他更好的资源文件可选的话,你的应用将会崩溃掉。(例如,如果所有的布局资源文件都是以xlarge 为标签的,而当前的设备屏幕是normal-size尺寸的。)

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...