Android 開發 API指南 如何查找最佳匹配資源

當您請求要爲其提供備用資源的資源時,Android 會根據當前的設備配置選擇要在運行時使用的備用資源。

假設以下可繪製對象目錄分別包含相同圖像的不同版本:

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

通過將設備配置與可用的備用資源進行比較,Android 從 drawable-en-port 中選擇可繪製對象。
系統使用以下邏輯決定要使用的資源:

Android如何查找最佳匹配資源的流程圖

Android 如何查找最佳匹配資源的流程圖。

  1. 淘汰與設備配置衝突的資源文件。
drawable-fr-rCA/ 目錄與 en-GB 語言區域衝突,因而被淘汰。
drawable/
drawable-en/
drawable-fr-rCA/
drawable-en-port/
drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-port-notouch-12key/
  1. 選擇列表(表 2)中(下一個)優先級最高的限定符。(先從 MCC 開始,然後下移。)
  2. 是否有資源目錄包括此限定符?
    • 若無,請返回到第 2 步,看看下一個限定符。(在該示例中,除非達到語言限定符,否則答案始終爲“否”。)
    • 若有,請繼續執行第 4 步。
  3. 淘汰不含此限定符的資源目錄。在該示例中,系統會淘汰所有不含語言限定符的目錄。
drawable/
drawable-en/
drawable-en-port/
drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-port-notouch-12key/

例外:如果涉及的限定符是屏幕像素密度,則 Android 會選擇最接近設備屏幕密度的選項。通常,Android 傾向於縮小大型原始圖像,而不是放大小型原始圖像。請參閱支持多種屏幕。

  1. 返回並重復第 2 步、第 3 步和第 4 步,直到只剩下一個目錄爲止。在此示例中,屏幕方向是下一個判斷是否匹配的限定符。因此,未指定屏幕方向的資源被淘汰:
drawable-en/
drawable-en-port/
drawable-en-notouch-12key/
剩下的目錄是 drawable-en-port
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章