第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開(kāi)發(fā)者教程

Android Studio 編輯器教程

Android Studio 添加應(yīng)用資源

前一小節(jié)我們介紹了如何使用 Android Studio 布局編輯器,本小結(jié)我們學(xué)習(xí) Android 的應(yīng)用資源類(lèi)型、備用資源限定和資源合并相關(guān)的知識(shí)。

1. 應(yīng)用資源的類(lèi)型

應(yīng)用資源是指代碼使用的附加文件和靜態(tài)內(nèi)容,例如位圖、布局定義、界面字符串、動(dòng)畫(huà)等。應(yīng)用資源分很多種:

  • 動(dòng)畫(huà)資源:定義預(yù)先確定的動(dòng)畫(huà),補(bǔ)間動(dòng)畫(huà)保存在 res/anim/ 中,幀動(dòng)畫(huà)保存在 res/drawable/ 中;

  • 顏色狀態(tài)列表資源:定義根據(jù) View 狀態(tài)而變化的顏色資源,保存在 res/color/ 中;

  • 可繪制資源:使用位圖或 XML 定義各種圖形,保存在 res/drawable/ 中;

  • 布局資源:定義應(yīng)用界面的布局,保存在 res/layout/ 中;

  • 菜單資源:定義應(yīng)用菜單的內(nèi)容,保存在 res/menu/ 中;

  • 字符串資源:定義字符串、字符串?dāng)?shù)組,保存在 res/values/ 中;

  • 樣式資源:定義界面元素的外觀和格式,保存在 res/values/ 中;

  • 字體資源:在 XML 中定義字體系列并包含自定義字體,保存在 res/font/ 中。

我們應(yīng)將各類(lèi)資源放入項(xiàng)目 res/ 目錄的特定子目錄中。例如,以下是一個(gè)簡(jiǎn)單項(xiàng)目的文件層次結(jié)構(gòu):

FirstApp/
    src/
        MainActivity.java
    res/
        drawable/
            graphic.png
        layout/
            main.xml
            info.xml
        mipmap/
            icon.png
        values/
            strings.xml

Tips:res/ 目錄包含所有資源:一個(gè)圖像資源、兩個(gè)布局資源、啟動(dòng)器圖標(biāo)資源以及一個(gè)字符串資源文件。

資源目錄名稱(chēng)非常重要,項(xiàng)目 res/ 目錄中支持的資源目錄見(jiàn)下表:

目錄 資源類(lèi)型
animator/ 用于定義屬性動(dòng)畫(huà)的 XML 文件。
anim/ 用于定義補(bǔ)間動(dòng)畫(huà)的 XML 文件。
color/ 用于定義顏色狀態(tài)列表的 XML 文件。
drawable/ 位圖文件或可繪制對(duì)象資源子類(lèi)型的 XML 文件
mipmap/ 適用于不同啟動(dòng)器圖標(biāo)密度的可繪制對(duì)象文件。
layout/ 用于定義用戶(hù)界面布局的 XML 文件。
menu/ 用于定義應(yīng)用菜單(如選項(xiàng)菜單、上下文菜單或子菜單)的 XML 文件。
raw/ 需以原始形式保存的任意文件。
values/ 包含字符串、整型數(shù)和顏色等簡(jiǎn)單值的 XML 文件。
xml/ 可在運(yùn)行時(shí)讀取的任意 XML 配置文件。
font/ 帶有擴(kuò)展名的字體文件或包含 元素的 XML 文件。

上表所列的目錄中,保存的資源為“默認(rèn)”資源,即這些資源定義應(yīng)用的默認(rèn)設(shè)計(jì)和內(nèi)容,除默認(rèn)資源以外,我們還需提供備用資源。

2. 應(yīng)用備用資源

不同類(lèi)型的 Android 設(shè)備可能需要不同類(lèi)型的資源。例如,如果設(shè)備屏幕比標(biāo)準(zhǔn)屏幕大,則應(yīng)提供不同的布局資源,從而充分利用額外的屏幕空間;如果設(shè)備的語(yǔ)言設(shè)置不同,則應(yīng)提供不同的字符串資源,以便將界面中的文本轉(zhuǎn)換為其他語(yǔ)言。在運(yùn)行時(shí),Android 會(huì)檢測(cè)當(dāng)前設(shè)備配置并為應(yīng)用加載合適的資源。

我們?nèi)绾螢橐唤M資源指定配置特定的備用資源呢?分兩步:

  1. 在 res/ 中創(chuàng)建以 < resources_name >-< config_qualifier > 形式命名的新目錄;
    • < resources_name > 是相應(yīng)默認(rèn)資源的目錄名稱(chēng);
    • < config_qualifier > 是指定要使用這些資源的各個(gè)配置限定符的名稱(chēng)。
  2. 將相應(yīng)的備用資源保存在此新目錄下,這些資源文件必須與默認(rèn)資源文件完全同名。

例如,以下是一些默認(rèn)資源和屏幕像素密度備用資源:

res/
    drawable/
        icon.png
        background.png
    drawable-hdpi/
        icon.png
        background.png

hdpi 限定符表示該目錄中的資源適用于屏幕密度較高的設(shè)備。其中,每個(gè)可繪制對(duì)象目錄中的圖像均已針對(duì)特定的屏幕密度調(diào)整了大小,但文件名完全相同。如此一來(lái),用于引用 icon.png 或 background.png 圖像的資源 ID 始終相同,但 Android 會(huì)通過(guò)將設(shè)備配置信息與資源目錄名稱(chēng)中的限定符進(jìn)行比較,選擇最符合當(dāng)前設(shè)備的各個(gè)資源版本。

Android 支持若干配置限定符,我們可以通過(guò)使用短劃線分隔每個(gè)限定符,從而向一個(gè)目錄名稱(chēng)添加多個(gè)限定符。下表按優(yōu)先級(jí)順序列出了有效的配置限定符;如果對(duì)資源目錄使用多個(gè)限定符,則必須按照表中所列順序?qū)⑵涮砑拥侥夸浢Q(chēng)中。

配置 描述
MCC 和 MNC 移動(dòng)設(shè)備國(guó)家代碼 (MCC),(可選)后跟設(shè)備 SIM 卡中的移動(dòng)設(shè)備網(wǎng)絡(luò)代碼 (MNC)。
語(yǔ)言和區(qū)域 語(yǔ)言通過(guò)由兩個(gè)字母組成的 ISO 639-1 語(yǔ)言代碼進(jìn)行定義,可以選擇后跟兩個(gè)字母組成的 ISO 3166-1-alpha-2 區(qū)域碼(前綴用小寫(xiě)字母 r)。
布局方向 應(yīng)用的布局方向。ldrtl 是指“布局方向從右到左”。
smallestWidth 屏幕的基本尺寸,由可用屏幕區(qū)域的最小尺寸指定。
可用寬度 指定資源應(yīng)使用的最小可用屏幕寬度。
可用高度 指定資源應(yīng)使用的最小可用屏幕高度。
屏幕尺寸 屏幕是小尺寸、標(biāo)準(zhǔn)尺寸還是大尺寸。
屏幕縱橫比 屏幕是否為寬屏。
圓形屏幕 屏幕是否為圓形屏幕。
廣色域 屏幕是否具有廣色域。
高動(dòng)態(tài)范圍 屏幕是否具有 HDR 功能。
屏幕方向 當(dāng)前的設(shè)備方向。類(lèi)似 port,land。
夜間模式 是否夜間模式。
屏幕像素密度 屏幕分辨率與屏幕尺寸的比值。類(lèi)似 ldpi,mdpi,hdpi,xhdpi 等。
平臺(tái)版本(API 級(jí)別) 設(shè)備支持的 API 級(jí)別。

3. 添加應(yīng)用資源

Android Studio 可以幫助我們通過(guò)多種方式添加新資源和備用資源,具體取決于我們要添加的資源的類(lèi)型。接下來(lái)我們學(xué)習(xí)如何添加基本的資源文件、如何更改資源的位置以及資源合并的原理。

3.1 添加 XML 資源文件

如果我們需要添加任何 XML 資源文件,請(qǐng)按照以下步驟操作:

點(diǎn)擊 Project 窗口中的目標(biāo)應(yīng)用模塊(在 AndroidProject 視圖中時(shí)),然后依次選擇 File > New > Android resource file;

在對(duì)話框中填寫(xiě)詳細(xì)信息:

  • File name:輸入 XML 文件的名稱(chēng)(不需要輸入 .xml 后綴);

  • Resource type:選擇要?jiǎng)?chuàng)建的資源的類(lèi)型;

  • Root element:為文件選擇根 XML 元素(如果適用)。某些資源類(lèi)型僅支持一種類(lèi)型的根元素,因此這項(xiàng)可能無(wú)法修改,具體取決于上面選擇的資源類(lèi)型;

  • Source set:選擇要將文件保存到的源代碼集;

  • Directory name:目錄命名方式必須特定于資源類(lèi)型和配置限定符;

  • Available qualifiers:我們可以選擇左側(cè)列表中的限定符。

添加完所需的所有限定符之后,點(diǎn)擊 OK

3.2 添加資源目錄

如果我們需要添加新的資源目錄,請(qǐng)按照以下步驟操作:

點(diǎn)擊 Project 窗口中的目標(biāo)應(yīng)用模塊,然后依次選擇 File > New > Android resource directory;

在對(duì)話框中填寫(xiě)詳細(xì)信息:

  • Directory name:目錄命名方式必須特定于資源類(lèi)型以及配置限定符的組合。

  • Resource type:選擇要?jiǎng)?chuàng)建的資源的類(lèi)型。

  • Source set:選擇要將布局保存到的源代碼集。

  • Available qualifiers:我們可以選擇左側(cè)列表中的限定符。
    添加完所需的所有限定符之后,點(diǎn)擊 OK。

3.3 更改資源目錄

默認(rèn)情況下,我們的資源位于 module-name/src/source-set-name/res/。例如,模塊的主源代碼集的資源位于 src/main/res/,調(diào)試源代碼集的資源則位于 src/debug/res/。

不過(guò),我們可以使用 sourceSets {} 塊中的 res.srcDirs 屬性將這些路徑更改為任何其他位置(相對(duì)于 build.gradle 文件)。例如:

android {
    sourceSets {
        main {
            res.srcDirs = ['resources/main']
        }
        debug {
            res.srcDirs = ['resources/debug']
        }
    }
}

我們還可以為一個(gè)源代碼集指定多個(gè)資源目錄,構(gòu)建工具會(huì)將它們合并在一起。例如:

android {
    sourceSets {
        main {
            res.srcDirs = ['res1', 'res2']
        }
    }
}

3.4 資源合并原理

最終 APK 文件中的資源可能有 3 個(gè)不同的來(lái)源:

  • 主源代碼集(通常位于 src/main/res/);

  • 構(gòu)建變體源代碼集;

  • Android 庫(kù) (AAR)。

如果來(lái)自各個(gè)源代碼集或庫(kù)的所有資源都是唯一的,則它們均會(huì)添加到最終 APK 中。如果某項(xiàng)資源的文件名在其資源類(lèi)型目錄和資源限定符(如果已定義)中都是唯一的,系統(tǒng)即會(huì)將該資源視為唯一的。

如果存在同一資源的兩個(gè)或多個(gè)匹配版本,則只有一個(gè)版本會(huì)包含在最終 APK 中。構(gòu)建工具會(huì)根據(jù)以下優(yōu)先級(jí)順序(左側(cè)的優(yōu)先級(jí)最高)選擇要保留的版本:

構(gòu)建變體 > build 類(lèi)型 > 產(chǎn)品變種 > 主源代碼集 > 庫(kù)依賴(lài)項(xiàng)

例如,如果主源代碼集包含:

  • res/layout/foo.xml

  • res/layout-land/foo.xml

并且調(diào)試 build 類(lèi)型包含:

  • res/layout/foo.xml

則最終 APK 會(huì)包括來(lái)自調(diào)試 build 類(lèi)型的 res/layout/foo.xml 和來(lái)自主源代碼集的 res/layout-land/foo.xml。

Tips:當(dāng)我們的構(gòu)建配置為一個(gè)給定的源代碼集指定了多個(gè)資源文件夾時(shí),如果這些來(lái)源之間存在沖突,則會(huì)發(fā)生錯(cuò)誤,并且合并會(huì)失敗,因?yàn)楦鱾€(gè)資源目錄的優(yōu)先級(jí)相同。

4. 小結(jié)

本節(jié)課程我們主要學(xué)習(xí)了 Android 的應(yīng)用資源類(lèi)型、備用限定及如何添加資源。本節(jié)課程的重點(diǎn)如下:

  • 掌握應(yīng)用資源的分類(lèi)和備用資源限定符;
  • 掌握添加資源和資源合并的原理。