Android應(yīng)用程序按18個(gè)維度的資源限定符來(lái)組織應(yīng)用程序資源温兼,如下表所示
上表是一個(gè)優(yōu)先級(jí)列表,優(yōu)先級(jí)從高到底
資源匹配算法
為方便理解,以我們?nèi)粘=佑|較多的drawable目錄為例,假設(shè)手機(jī)設(shè)備配置如下:
語(yǔ)言區(qū)域:中國(guó)
屏幕像素密度(DPI):xdpi
屏幕方向:豎屏
1.排除與設(shè)備配置沖突的資源文件
由于手機(jī)語(yǔ)言設(shè)置為中文泥栖,所以
2.從優(yōu)先級(jí)列表中選定(下一個(gè))資源限定符
根據(jù)上面的優(yōu)先級(jí)列表首先為選這MCC和MNC作為限定符,然后下移
3.判斷當(dāng)前所有資源目錄是否含有此限定符
如果當(dāng)前資源目錄含有此限定符勋篓,則執(zhí)行第四步吧享,反之則執(zhí)行第二步,從優(yōu)先級(jí)列表中選擇下一個(gè)資源限定符生巡。
4.排除與資源限定符不匹配的資源目錄
排除不含此限定符的資源目錄
注意:如果涉及的限定符是屏幕像素密度耙蔑,則 Android 會(huì)選擇最接近設(shè)備屏幕密度的選項(xiàng)。通常孤荣,Android 傾向于縮小大型原始圖像甸陌,而不是放大小型原始圖像。
通用密度 | 范圍值 |
---|---|
ldpi(低) | ~120dpi |
mdpi(中) | ~160dpi |
hdpi(高) | ~240dpi |
xhdpi(超高) | ~320dpi |
xxhdpi(超超高) | ~480dpi |
xxxhdpi(超超超高) | ~640dpi |
個(gè)人理解盐股,如果設(shè)備的實(shí)際DPI位于ldpi與mdpi交集段的中心钱豁,那么系統(tǒng)會(huì)傾向于使用mdpi目錄下的資源,即縮小大圖疯汁,縮小清晰度能得到保障牲尺,放大容易模糊。
5.排除與當(dāng)前資源限定符不符合的資源目錄后,如果剩余的匹配目錄不唯一谤碳,則重復(fù)執(zhí)行第2溃卡、3、4步蜒简,直到匹配的資源目錄唯一瘸羡。
drawable-nxhdpi-2150x1080 dpi后面可以跟具體的分辨率,代碼中nxhdpi看不懂搓茬,可解壓apk犹赖,會(huì)發(fā)現(xiàn)對(duì)應(yīng)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