安卓学习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

猜你喜欢

转载自blog.csdn.net/weixin_42540829/article/details/85070562