美文网首页
Android 查找匹配资源流程

Android 查找匹配资源流程

作者: linnnE | 来源:发表于2019-02-22 18:41 被阅读0次

参考:https://developer.android.google.cn/guide/topics/resources/providing-resources#BestMatch
有以下资源目录:

drawable/
drawable-en/
drawable-fr-rCA/
drawable-en-port/
drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-port-notouch-12key/

系统的设备配置环境:

语言区域 = en-GB 
屏幕方向 = port 
屏幕像素密度 = hdpi 
触摸屏类型 = notouch 
主要文本输入法 = 12key

各种配置修饰符之间存在优先级,优先级顺序可以参考:限定符优先级列表
此处优先级:en=fr > port > ldpi > notouch > 12key

按以下步骤淘汰目录:

  1. 淘汰与设备配置有冲突的目录
    • 有冲突不是不存在,设备语言配置为en,而en与fr冲突,则包含fr的那个目录淘汰,但是没有语言修饰符的目录留存。
    • 因此淘汰drawable-fr-rCA目录,留下来的目录为:
    drawable/
    drawable-en/
    drawable-en-port/
    drawable-en-notouch-12key/
    drawable-port-ldpi/
    drawable-port-notouch-12key/
    
  2. 系统根据限定符优先级从大到小顺序进行挑选,选出一个限定符,若所有目录都没有该限定符,则跳过选择下一个优先级较低的限定符进行筛选,若有目录包含该限定符,则淘汰不包含该限定符的目录,在此例中,筛选到语言限定符en时,淘汰不包含en的目录,剩下:
    drawable-en/
    drawable-en-port/
    drawable-en-notouch-12key/
    
    根据优先级筛选到port,删除不包含port的目录,剩下:
    drawable-en-port/
    
    最后筛选到只剩一个,就是最终要引用资源的目录。

第一阶段中屏幕像素密度的筛选是个例外,各屏幕像素密度之间各不冲突,android会挑选最接近设备像素密度的那个目录进行缩放适配。

相关文章

网友评论

      本文标题:Android 查找匹配资源流程

      本文链接:https://www.haomeiwen.com/subject/hogeyqtx.html