Android應(yīng)用程序的資源選擇規(guī)則

Android應(yīng)用程序的資源選擇的規(guī)則一共有18種,如圖1:

圖1

具體可參考:http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources。這18個規(guī)則是按照優(yōu)先級從最大到小排列的,通過這些匹配規(guī)則,應(yīng)用程序就能選擇最佳的資源目錄。

在應(yīng)用程序中我們可以根據(jù)這些規(guī)則來命名資源目錄的名稱,例如:drawable-port-hdpi。這里要注意幾點:第一,這18個規(guī)則是有優(yōu)先級的,所以如果上面的例子寫成drawable-hdpi-port就會出問題;第二,資源目錄是不允許嵌套的,諸如res/drawable/drawable-en/形式的資源目錄都是不行的;第三,同一規(guī)則只能出現(xiàn)一次,諸如drawable-xhdpi-hdpi的命名是不允許的。

上面所說的注意點其實和Android的匹配算法有關(guān)系,圖2是官方給出的匹配算法,

圖2

下面用官方的例子來說明下這個算法,詳細(xì)內(nèi)容可以參考http://developer.android.com/guide/topics/resources/providing-resources.html#BestMatch
drawable/
drawable-en/
drawable-fr-rCA/
drawable-en-port/
drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-port-notouch-12key/
運行該程序的設(shè)備信息如下
Locale = en-GB
Screen orientation = port
Screen pixel density = hdpi
Touchscreen type = notouch
Primary text input method = 12key
根據(jù)圖2的算法,一共分5步,
1.首先排除與設(shè)備信息矛盾不符的目錄,即:
drawable/
drawable-en/
drawable-fr-rCA/
drawable-en-port/
drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-port-notouch-12key/
2.按照這18個規(guī)則的優(yōu)先級,從MCC and MNC開始進行2~4步驟的篩選第一步篩選剩下的目錄
3. 看在第二步中選擇的規(guī)則有沒有匹配到文件夾,如果有,就執(zhí)行第四步;如果沒有就返回執(zhí)行第二步,即切換到下一個優(yōu)先級的規(guī)。。在這個例子中,MCC and MNC沒有匹配到任何文件夾,所以返回第二步,切換到第二個規(guī)則Language and region進行篩選
4.去除那些不含有第二步規(guī)則的資源目錄,即:
drawable/
drawable-en/
drawable-en-port/
drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-port-notouch-12key/
5.繼續(xù)執(zhí)行2~4,直到找到一個最匹配的資源目錄為止,即剩下最后一個目錄。這個例子中,匹配screen orienation時,由于設(shè)備的screen orienation為port,因此,所有不包含有port資源目錄將被去除,即:
drawable-en/
drawable-en-port/
drawable-en-notouch-12key/
所以最終會選擇drawable-en-port/這個資源目錄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • android res 資源匹配目錄 、 drawable與 mipmap的區(qū)別 在res目錄下,有各種各樣的資源...
    chendroid閱讀 5,847評論 0 8
  • 概述 對于Android中的應(yīng)用資源,例如圖像、字符串、布局、顏色等,最好是在res文件夾中定義,而不是在代碼中定...
    CP9閱讀 2,479評論 1 2
  • 我算得上是一個喜歡音樂的人,每天除了定時定量運動,幾乎每天都要聽歌。曾一度認(rèn)為,生活中沒有音樂,可讓人怎么活。各式...
    島嶼書閱讀 435評論 6 4
  • 室友和男友每兩天就會吵一架,久而久之我們都習(xí)慣了,兩個人是異地戀,他不放心,她嫌他管得太嚴(yán),以前我也覺...
    離雨閱讀 332評論 0 0
  • 孩子高考完了,看桐兒在數(shù)學(xué)的考試感覺不好以外,語文,文綜,英語感覺還好,我心里很欣慰,孩子應(yīng)心了,分?jǐn)?shù)多少無所謂!
    b4bc3677bd8a閱讀 252評論 0 0

友情鏈接更多精彩內(nèi)容