1. 程式人生 > >Android 開發 API指南 如何查詢最佳匹配資源

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