Os recursos do app, como bitmaps e layouts, são organizados em diretórios de tipo específico
dentro do diretório res/
de cada módulo. Também é possível adicionar versões
alternativas de cada arquivo que são otimizadas para diferentes configurações
do dispositivo (como uma versão de alta resolução de um bitmap para telas de alta
densidade).
O Android Studio ajuda você a adicionar recursos novos e alternativos de várias maneiras, dependendo do tipo de recurso que você quer adicionar. Esta página descreve como adicionar arquivos de recursos básicos, como mudar a localização dos recursos e como funciona a mescla de recursos.
Consulte as páginas abaixo para detalhes sobre como criar tipos de recursos específicos:
- Para adicionar arquivos de layout, consulte Criar uma interface com o Layout Editor.
- Para adicionar arquivos de string, consulte Localizar a interface com o Translations Editor.
- Para adicionar bitmaps, consulte Criar ícones do app com o Image Asset Studio.
- Para adicionar arquivos SVG, consulte Adicionar gráficos vetoriais de várias densidades.
Para mais informações sobre como referenciar os recursos do código do app, consulte Visão geral dos recursos de app.
Adicionar um arquivo de recurso XML
Os links das páginas anteriores descrevem fluxos de trabalho personalizados para cada tipo de recurso, mas é possível adicionar qualquer arquivo de recurso XML seguindo estas etapas:
Clique no módulo do app de destino na janela Project na visualização Android ou Project.
- Selecione File > New > Android Resource File.
- Preencha as informações na caixa de diálogo:
- File name: insira o nome do arquivo XML (não precisa do
sufixo
.xml
). - Resource type: selecione o tipo de recurso que você quer criar.
- Root element: se aplicável, selecione o elemento XML raiz do arquivo. Alguns tipos de recursos oferecem suporte a apenas um tipo de elemento raiz. Dependendo do tipo de recurso selecionado, pode não ser possível editar esse campo.
- Source set: selecione o conjunto de origem em que você quer salvar o arquivo.
- Directory name: o diretório precisa ser nomeado de uma maneira específica para os qualificadores de configuração e tipo de recurso. Não edite esse campo a menos que você queira adicionar qualificadores de configuração ao nome do diretório manualmente (use Available qualifiers).
- Available qualifiers: em vez de incluir manualmente os qualificadores de configuração no nome do diretório, é possível adicioná-los selecionando um qualificador na lista e clicando em Add .
- File name: insira o nome do arquivo XML (não precisa do
sufixo
- Depois de adicionar todos os qualificadores desejados, clique em OK.
Dica: para abrir uma versão simplificada da caixa de diálogo New Resource File específica do tipo de recurso que você quer adicionar, clique com o botão direito do mouse em um diretório de recursos na pasta res e selecione New > type-name resource file.
Recursos XML inline complexos
Alguns recursos complexos exigem vários arquivos de recursos XML. Por exemplo, um drawable vetorial animado tem um objeto de drawable vetorial e um objeto de animação, o que requer pelo menos três arquivos XML.
Nesse exemplo, é possível criar e manter os três arquivos XML separados se você precisar reutilizar um ou mais deles. Porém, se os arquivos XML forem usados apenas para esse drawable vetorial animado, você poderá usar o formato de recurso inline fornecido na Android Asset Packaging Tool (AAPT). Com a AAPT, você pode definir todos os três recursos em um único arquivo XML. Para mais informações, consulte Recursos XML inline complexos.
Adicionar um diretório de recursos
Para adicionar um novo diretório de recursos, siga estas etapas:
Clique no módulo do app de destino na janela Project.
- Selecione File > New > Android resource directory.
- Preencha as informações na caixa de diálogo:
- Directory name: o diretório precisa ser nomeado de uma maneira específica para a combinação de qualificadores de configuração e tipo de recurso. Não edite esse campo a menos que você queira adicionar qualificadores de configuração ao nome do diretório manualmente (use Available qualifiers).
- Resource type: selecione o tipo de recurso que você quer que o diretório contenha.
- Source set: selecione o conjunto de origem onde você quer o diretório.
- Available qualifiers: em vez de incluir manualmente os qualificadores de configuração no nome do diretório, é possível adicioná-los selecionando um qualificador na lista e clicando em Add .
- Depois de adicionar todos os qualificadores desejados, clique em OK.
Alterar seu diretório de recursos
Por padrão, seus recursos ficam localizados em
module-name/src/source-set-name/res/
.
Por exemplo, os recursos do conjunto de origem principal do seu módulo ficam em src/main/res/
e os recursos do conjunto de origem de depuração ficam em src/debug/res/
.
No entanto, você pode mudar esses caminhos para qualquer outro
local (relativo ao arquivo build.gradle
) com a propriedade
res.srcDirs
no bloco sourceSets
. Exemplo:
Groovy
android { sourceSets { main { res.srcDirs = ['resources/main'] } debug { res.srcDirs = ['resources/debug'] } } }
Kotlin
android { sourceSets { getByName("main") { res.srcDirs("resources/main") } getByName("debug") { res.srcDirs("resources/debug") } } }
Também é possível especificar vários diretórios de recursos para um conjunto de origem e, então, as ferramentas de build serão mescladas. Exemplo:
Groovy
android { sourceSets { main { res.srcDirs = ['res1', 'res2'] } } }
Kotlin
android { sourceSets { main { res.srcDirs("res1", "res2") } } }
Para ver mais informações, leia sobre conjuntos de origem.
Mescla de recursos
Os recursos no arquivo final do app podem vir de três origens:
- O conjunto de origem principal (geralmente localizado em
src/main/res/
) - Conjuntos de origem de variantes de build
- Bibliotecas do Android (AARs)
Quando todos os recursos de cada conjunto de origem ou biblioteca são exclusivos, todos eles são adicionados ao app final. Um recurso será considerado exclusivo se o nome de arquivo for exclusivo no diretório do tipo de recurso e no qualificador do recurso (se definido).
Se houver duas ou mais versões do mesmo recurso com nomes iguais, somente uma será incluída no app final. As ferramentas de build selecionam qual versão manter com base na seguinte ordem de prioridade (a mais alta à esquerda):
variante de build > tipo de build > variação de produto > conjunto de origem principal > dependências de biblioteca
Por exemplo, se o conjunto de origem principal contiver:
res/layout/example.xml
res/layout-land/example.xml
E o tipo de build de depuração contiver:
res/layout/example.xml
Então, o app final incluirá res/layout/example.xml
do tipo de build de depuração e
res/layout-land/example.xml
do conjunto de origem principal.
No entanto, caso sua configuração de build especifique várias pastas de recursos para um determinado conjunto de origem e conflitos existam entre essas origens, vai ocorrer um erro e a mesclagem vai falhar, porque todos os diretórios de recursos têm a mesma prioridade.