1. 程式人生 > >安卓學習LSSON7:Android資源目錄結構初識

安卓學習LSSON7:Android資源目錄結構初識

如同JAVA開發的專案結構,Android開發時也一樣在學習初期就養成好的習慣,將所用的資原始檔合理的分類存放,便於使用維護。

在進行第一個程式開發時,在引用背景圖片時,示例中在res/drawable下新建了一個directory 用於存放所需圖片。在將資料夾建好後,複製圖片,選擇了新建的檔案目錄路徑,粘貼後卻發現drawable無法展開,無法找到貼上的圖片,但是切換到Project模式卻可以看到資料夾和圖片確實存在。

在這裡插入圖片描述
在這裡插入圖片描述

AS的Project模式,看到的是實際的目錄結構。

AS的Android模式,看到的是被整合過的目錄,並非實際存在的目錄。

Android模式下的目錄命名是嚴格控制的,只要你的目錄命名(以特定名稱+“-”)不在可選的範圍內(如drawable,layout,menu,mipmap,values等),目錄中的資源時不會被讀取的(如res下新建名為 whatever 的目錄中的資源),也是不可以使用的。想要使用資源就必須讓所在的目錄按照規範進行命名(比如命名為drawable-whatever)。

資源在整合時,會按分類彙總所有規範命名目錄下的資源。如drawable目錄下為所有 以 drawable- 開頭的目錄下的所有檔案(不包括子級目錄中的檔案!)。

資源目錄列表(sourceSets)規定了專案可以使用資源的範圍,不在範圍內的資源不被讀取也無法被引用。資源目錄列表可以在build.gradle檔案中配置。

若一個規範命名的目錄的上一級目錄不在資源目錄列表中,也是無法讀取使用的。如下圖紅框的資源,drawable-eee 的上級目錄為 drawable-hdpi 並不在資源目錄列表中(預設資源列表是 src/main/res,可能有不同),這時想要使用裡面的資源就需要把他 drawable-hdpi新增進資源目錄列表中。
在這裡插入圖片描述

build.gradle中進行下列配置後,便可正常使用drawable-eee中的資源。

android{
....
sourceSets {
        main {
            res{
                srcDir 'src/main/res/drawable-hdpi'
            }
        }
    }
 }

srcDir ‘’ 可以將指定路徑新增入現有的資源目錄列表。
srcDirs = [’’,’’,’’] 可以替換現有的資源目錄列表。

安卓資原始檔詳解:https://www.cnblogs.com/guop/p/4973829.html


Gradle詳解:https://github.com/rujews/android-tech-docs/blob/master/new-build-system/user-guide/README.md#321