添加应用资源

应用程序资源(如位图和布局)组织到每个模块res/目录中的特定于类型的目录中。您还可以添加针对不同设备配置优化的每个文件的替代版本(例如,高密度屏幕的高分辨率版本的位图)。

Android Studio可以通过多种方式帮助您添加新资源和替代资源,具体取决于您要添加的资源类型。此页面介绍如何添加基本资源文件,如何更改资源的位置以及资源合并的工作方式。

您还应该看到以下页面,以获取有关如何创建特定资源类型的详细信息:

  • 要添加布局文件,请参阅使用布局编辑器构建UI。
  • 要添加字符串文件,请参阅使用翻译编辑器本地化UI。
  • 要添加位图,请参阅使用Image Asset Studio创建应用程序图标。
  • 要添加SVG文件,请参阅添加多密度矢量图形。

有关如何从应用程序代码引用资源的信息,请参阅 提供资源。

添加XML资源文件

虽然上面链接的页面描述了为每种类型的资源定制的工作流,但您可以按照以下步骤添加任何XML资源文件:

  1. Project窗口中单击目标应用程序模块(在Android或项目视图中),然后选择
    File > New > Android resource file
    在这里插入图片描述

  2. 在对话框中填写详细信息:

    • File name:键入XML文件的名称(不需要 .xml后缀)。
    • Resource type:选择要创建的资源类型。
    • Root element::如果适用,请选择文件的根XML元素。某些资源类型仅支持一种类型的根素,因此根据上面选择的类型,这可能不可编辑。
    • Source set:选择要保存文件的源集。
    • Directory name:必须以特定于资源类型和配置限定符的方式命名目录。因此,除非要手动将配置限定符添加到目录名称,否则不应编辑此项(请参阅可用限定符)。
    • Available qualifiers:您可以通过单击左侧列表中的限定符,然后单击“ 添加” 来添加它们,而不是为布局目录键入配置限定符。
  3. 添加完所需的所有限定符后,单击“ 确定”。

提示:右键单击res文件夹中的现有资源目录, 然后选择“ 新建”>“ 类型名称资源文件”。这将打开“ 新资源文件”对话框的简化版本,该对话框特定于所需的资源类型。

提示: 某些复杂资源需要多个XML资源文件。例如,动画矢量drawable具有矢量可绘制对象和动画对象,这需要至少三个XML文件。如果需要重用一个或多个XML文件,则可以保留这三个单独的XML文件。但是,如果XML文件仅用于此动画矢量drawable,则可以使用Android资产包装工具(AAPT)中提供的内联资源格式。使用AAPT,您可以在一个XML文件中定义所有三个资源。有关更多信息,请参阅 内联复杂XML资源。

添加资源目录

如果需要添加新资源目录,请按照下列步骤操作:

  1. 在“ 项目”窗口中单击目标应用程序模块,然后选择“ 文件”>“新建”>“Android资源目录”。

  2. 在对话框中填写详细信息:

    • 目录名称:必须以特定于资源类型和配置限定符组合的方式命名目录。因此,除非要手动将配置限定符添加到目录名称,否则不应编辑此项(请改用Available限定符)
    • 资源类型:选择要创建的资源类型。
    • 源集:选择所需布局的源集。
    • 可用限定符:您可以通过单击左侧列表中的限定符,然后单击“ 添加” 来添加它们,而不是为布局目录键入配置限定符。
  3. 添加完所需的所有限定符后,单击“ 确定”。

更改资源目录

默认情况下,您的资源位于 。例如,模块的主要源集的 资源位于其中,调试源集的资源位于其中。module-name/src/source-set-name/res/ src/main/res/src/debug/res/

但是,您可以使用块中build.gradle的res.srcDirs属性将这些路径更改为任何其他位置(相对于文件)sourceSets {}。例如:

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

您还可以为一个源集指定多个资源目录,然后构建工具将它们合并在一起。例如:

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

注意:如果两个或多个资源目录包含相同的资源文件,则在资源合并期间会发生错误。
有关更多信息,请阅读有关 源集的信息。

资源合并

最终APK文件中的资源可能来自3个不同的来源:

  • 主要来源集(一般位于src/main/res/)
  • Build variant 源集
  • Android库(AAR)

当来自每个源集或库的所有资源都是唯一的时,它们都被添加到最终的APK中。资源被认为是独一无二的,如果它的文件名是内唯一既其 资源类型目录和 资源预选赛 (如果定义)。

如果存在两个或更多相同资源的匹配版本,则最终APK中仅包含一个版本。构建工具根据以下优先级顺序选择要保留的版本(左侧最高优先级):

Build variant>构建类型>产品风格>主要源集>库依赖项
例如,如果主源集包含:

  • res/layout/foo.xml
  • res/layout-land/foo.xml

调试版本类型包含:

  • res/layout/foo.xml

然后最终的APK包括res/layout/foo.xml调试构建类型和 res/layout-land/foo.xml主要源集。

但是,如果构建配置为给定的源集指定了 多个资源文件夹,并且这些源之间存在冲突,则会发生错误,并且合并失败,因为每个资源目录具有相同的优先级

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值