Добавьте ресурсы приложения

Ресурсы приложения, такие как растровые изображения и макеты, организованы в каталоги определенного типа внутри каталога res/ каждого модуля. Вы также можете добавить альтернативные версии каждого файла, оптимизированные для различных конфигураций устройств, например версию растрового изображения с высоким разрешением для экранов с высокой плотностью.

Android Studio помогает добавлять новые и альтернативные ресурсы несколькими способами, в зависимости от типа ресурса, который вы хотите добавить. На этой странице описывается, как добавить базовые файлы ресурсов, как изменить расположение ресурсов и как работает объединение ресурсов.

Подробную информацию о том, как создавать определенные типы ресурсов, см. на следующих страницах:

Сведения о том, как ссылаться на ресурсы из кода приложения, см. в разделе Обзор ресурсов приложения .

Добавьте файл ресурсов XML

Хотя ссылки на предыдущие страницы описывают рабочие процессы, настроенные для каждого типа ресурса, вы можете добавить любой файл ресурсов XML, выполнив следующие действия:

  1. Щелкните модуль целевого приложения в окне «Проект» в представлении «Android» или «Проект» .

  2. Выберите «Файл» > «Создать» > «Файл ресурсов Android» .

    Рисунок 1. Диалоговое окно «Новый файл ресурсов» .

  3. Заполните детали в диалоге:
    • Имя файла : введите имя XML-файла (суффикс .xml не требуется).
    • Тип ресурса : выберите тип ресурса, который вы хотите создать.
    • Корневой элемент : если применимо, выберите корневой элемент XML для файла. Некоторые типы ресурсов поддерживают только один тип корневого элемента. В зависимости от выбранного типа ресурса это может быть недоступно для редактирования.
    • Исходный набор : выберите исходный набор , в котором вы хотите сохранить файл.
    • Имя каталога . Имя каталога должно соответствовать типу ресурса и квалификаторам конфигурации. Не редактируйте это, если вы не хотите вручную добавлять квалификаторы конфигурации к имени каталога (вместо этого используйте квалификаторы «Доступно» ).
    • Доступные квалификаторы . Вместо того, чтобы вручную включать квалификаторы конфигурации в имя каталога, вы можете добавить их, выбрав квалификатор из списка и нажав «Добавить» . .
  4. Добавив все необходимые квалификаторы, нажмите «ОК» .

Совет: Чтобы открыть упрощенную версию диалогового окна «Новый файл ресурса» , специфичную для типа ресурса, который вы хотите добавить, щелкните правой кнопкой мыши существующий каталог ресурсов в папке res и выберите «Создать» > «файл ресурсов type-name .

Встроенные сложные XML-ресурсы

Для некоторых сложных ресурсов требуется несколько файлов ресурсов XML. Например, анимированный векторный рисуемый объект имеет векторный рисуемый объект и объект анимации и требует как минимум трех XML-файлов.

В этом примере вы можете создать и сохранить три отдельных XML-файла, если вам понадобится повторно использовать один или несколько из них. Но если файлы XML используются только для этого анимированного векторного изображения, вместо этого вы можете использовать формат встроенных ресурсов, предоставляемый в инструменте упаковки ресурсов Android (AAPT). С помощью AAPT вы можете определить все три ресурса в одном XML-файле. Дополнительные сведения см. в разделе Встроенные сложные ресурсы XML .

Добавить каталог ресурсов

Чтобы добавить новый каталог ресурсов, выполните следующие действия:

  1. Щелкните целевой модуль приложения в окне проекта .

  2. Выберите «Файл» > «Создать» > «Каталог ресурсов Android» .

    Рисунок 2. Диалоговое окно «Новый каталог ресурсов» .

  3. Заполните данные в диалоге:
    • Имя каталога . Имя каталога должно соответствовать типу ресурса и комбинации квалификаторов конфигурации. Не редактируйте это, если вы не хотите вручную добавлять квалификаторы конфигурации к имени каталога (вместо этого используйте квалификаторы «Доступно» ).
    • Тип ресурса: выберите тип ресурса, который вы хотите, чтобы каталог содержал.
    • Исходный набор: выберите исходный набор, в котором вы хотите создать каталог.
    • Доступные квалификаторы. Вместо того, чтобы вручную включать квалификаторы конфигурации в имя каталога, вы можете добавить их, выбрав квалификатор из списка и нажав «Добавить» . .
  4. Добавив все необходимые квалификаторы, нажмите «ОК» .

Измените каталог ресурсов

По умолчанию ваши ресурсы расположены в 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 {
        getByName("main") {
            res.srcDirs("resources/main")
        }
        getByName("debug") {
            res.srcDirs("resources/debug")
        }
    }
}

Вы также можете указать несколько каталогов ресурсов для одного исходного набора, а затем инструменты сборки объединят их вместе. Например:

классный

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

Котлин

android {
    sourceSets {
        main {
            res.srcDirs("res1", "res2")
        }
    }
}

Подробнее читайте про исходные наборы .

Объединение ресурсов

Ресурсы в конечном файле приложения могут поступать из трех источников:

Когда все ресурсы из каждого исходного набора или библиотеки уникальны, все они добавляются в окончательное приложение. Ресурс считается уникальным, если его имя файла уникально как в пределах каталога типа ресурса , так и в квалификаторе ресурса (если он определен).

Если существует две или более совпадающие версии одного и того же ресурса, в окончательное приложение включается только одна версия. Инструменты сборки выбирают, какую версию сохранить, в следующем порядке приоритета (наивысший приоритет слева):

вариант сборки > тип сборки > вариант продукта > основной набор исходного кода > зависимости библиотеки

Например, если основной исходный набор содержит:

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

И тип отладочной сборки содержит:

  • res/layout/example.xml

Затем окончательное приложение включает res/layout/example.xml из типа отладочной сборки и res/layout-land/example.xml из основного набора исходного кода.

Однако если в вашей конфигурации сборки указано несколько папок ресурсов для данного набора исходных текстов и между этими источниками возникают конфликты, возникает ошибка и слияние завершается неудачей, поскольку каждый каталог ресурсов имеет одинаковый приоритет.