美文网首页
Android资源匹配机制

Android资源匹配机制

作者: GrayMonkey | 来源:发表于2018-07-31 18:29 被阅读36次

    Android应用程序按18个维度的资源限定符来组织应用程序资源,如下表所示

    资源组织优先级列表

    上表是一个优先级列表,优先级从高到底

    资源匹配算法

    资源匹配算法

    为方便理解,以我们日常接触较多的drawable目录为例,假设手机设备配置如下:
    语言区域:中国
    屏幕像素密度(DPI):xdpi
    屏幕方向:竖屏
    1.排除与设备配置冲突的资源文件
    由于手机语言设置为中文,所以
    2.从优先级列表中选定(下一个)资源限定符
    根据上面的优先级列表首先为选这MCC和MNC作为限定符,然后下移
    3.判断当前所有资源目录是否含有此限定符
    如果当前资源目录含有此限定符,则执行第四步,反之则执行第二步,从优先级列表中选择下一个资源限定符。
    4.排除与资源限定符不匹配的资源目录
    排除不含此限定符的资源目录

    注意:如果涉及的限定符是屏幕像素密度,则 Android 会选择最接近设备屏幕密度的选项。通常,Android 倾向于缩小大型原始图像,而不是放大小型原始图像。

    通用密度 范围值
    ldpi(低) ~120dpi
    mdpi(中) ~160dpi
    hdpi(高) ~240dpi
    xhdpi(超高) ~320dpi
    xxhdpi(超超高) ~480dpi
    xxxhdpi(超超超高) ~640dpi

    个人理解,如果设备的实际DPI位于ldpi与mdpi交集段的中心,那么系统会倾向于使用mdpi目录下的资源,即缩小大图,缩小清晰度能得到保障,放大容易模糊。

    图片来自官网

    5.排除与当前资源限定符不符合的资源目录后,如果剩余的匹配目录不唯一,则重复执行第2、3、4步,直到匹配的资源目录唯一。

    drawable-nxhdpi-2150x1080 dpi后面可以跟具体的分辨率,代码中nxhdpi看不懂,可解压apk,会发现对应440dpi-2150x1080

    参考链接
    https://developer.android.com/guide/topics/manifest/activity-element.html?hl=zh-cn#config
    https://developer.android.com/guide/practices/screens_support.html
    https://developer.android.com/guide/topics/resources/providing-resources.html
    anddroid:configChange

    相关文章

      网友评论

          本文标题:Android资源匹配机制

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