Android開發系列6——項目中res詳解

前言

  Android項目中的res(Resources)文件夾是項目的資源配置路徑,Android系統會根據請求的資源:res——>存放文件類型文件目錄+資源限配符——>文件名,簡單流程如下:

Created with Raphaël 2.2.0資源文件引用res資源目錄查找anim、drawable、values等文件根據設備匹配,優先級:<resources_name>-<config_qualifier>,查找到對應的資源資源引用yesno

接下來會詳細介紹res目錄下的資源文件,以及資源文件對應的資源限定符

一、資源文件介紹

Android系統res下會提供一些資源的目錄,每種目錄都對應存放不同的資源文件。

資源目錄 對應資源目錄存放類型
animation/ 用於定義屬性動畫的XML文件
anim/ 定義漸變動畫的XML文件
color/ 用於定義顏色狀態列表
drawable/ 位圖文件(.png、.jpg、 .gif)狀態列表、形狀等
mipmap/ 不同啓動圖標密度的mipmap/用於App的icon、啓動圖片等
layout/ 用於定義用戶界面佈局
menu/ 用於定義應用菜單(選項菜單、上下文菜單或子菜單等)
raw/ 原始形式保存的任意文件
values/ 包含字符串、整形數和顏色等
xml/ 可以在運行時調用Resources.getXML()讀取的任意XML文件

默認的Android項目res目錄如下,可以根據需要再創建不同類型的資源文件。
res目錄

二、資源限配符

Android由於大量的不同廠家的設備,爲了更好的適配各種設備。Android系統提供了大量的資源限配符支持各種設備的適配。資源限配符如下:

優先級 配置 限定符號
1 MCC 移動國家代碼,示例:mcc310、mcc310-mnc004、mcc208-mnc00等等
2 語言和地區 語言代碼定義,示例:en、fr、en-rUS、fr-rFR、fr-rCA等等
3 佈局方向(api-17 應用的佈局方向,ldrtl 是指“佈局方向從右到左”。ldltr 是指“佈局方向從左到右”,這是默認的隱式值。
4 smallestWidth(api-13) 屏幕的基本尺寸,由可用屏幕區域的最小尺寸指定。swdp示例:sw320dp、sw600dp、sw720dp等等
5 可用寬度 指定資源應該使用的最小可用屏幕寬度。wdp示例:w720dp、w1024dp等等
6 可用高度 指定資源應該使用的最小可用屏幕高度。hdp示例:h720dp、h1024dp等等
7 屏幕尺寸 small(320x426 dp)、normal(320x470 dp)、large(480x640 dp)、xlarge(720x960 dp)
8 屏幕縱橫比 long(寬屏)、notlong(非寬屏)
9 屏幕方向 port、land
10 UI 模式 car(車載手機座)、desk、television、appliancewatch
11 夜間模式 Night、notnight
12 屏幕像素密度 (dpi) ldpi、mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi、nodpi、tvdpi
13 觸摸屏類型 notouch:設備沒有觸摸屏、finger
14 鍵盤可用性 keysexposed:設備具有可用的鍵盤、keyshidden、keyssoft
15 主要文本輸入法 nokeys:設備沒有用於文本輸入的硬按鍵、qwerty、12key
16 導航鍵可用性 Navexposed、navhidden
17 主要非觸摸導航方法 Nonav、dpad、trackball、wheel
18 平臺版本(API 級別) 示例:v3、v4、v7 等等

注意: 資源限定符是在不同的系統API基礎之上,不斷地增加。現在列舉的通配符不是所有API版本都支持的,在開發過程中需要注意當前支持的API版本對應的 資源限配符

三、設備適配詳細流程

  通過以上兩點的描述,基本對Android設備的資源文件存放有了詳細的瞭解。不同Android設備在運行時引用資源規則如下:

Created with Raphaël 2.2.0Android Devices查找與引用資源文件 對應的所有匹配的文件目錄(文件目錄+限定符)文件目錄+限定符(優先級從高到低)列表ListA。優先級高的先讀取,第一次讀取ListA第一個最高優先級TempA,其他,根據上一次讀取優先級下一級ListA列表的下一優先級文件夾TempA。如果讀取到ListA最後問價夾還是沒有資源文件,則讀取失敗讀取TempA內資源文件是否存在獲取資源文件成功結束yesno

總結

Android項目中設定的 資源文件+ 限配符主要是更好的適配所有全球各地的各個廠商出產的Android硬件設備,同時還有Android系統API的更新等情況,以上就是簡單的介紹res內資源配置情況。

持續更新中……

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章