Adicionar recursos de app

Os recursos do app, como bitmaps e layouts, são organizados em diretórios específicos de tipo dentro do diretório res/ de cada módulo. Você também pode adicionar versões alternativas de cada arquivo que são otimizadas para diferentes configurações de 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 alterar a localização dos recursos e como funciona a mescla de recursos.

Consulte também as seguintes páginas para ver detalhes sobre como criar tipos de recursos específicos:

Para informações sobre como referenciar os recursos do código do app, consulte Fornecimento de recursos.

Adicionar um arquivo de recurso XML

Embora as páginas vinculadas acima descrevam fluxos de trabalho personalizados para cada tipo de recurso, você pode adicionar qualquer arquivo de recurso XML seguindo estas etapas:

  1. Clique no módulo de app de destino na janela Project (na visualização Android ou Project) e selecione File > New > Android resource file.

  2. Preencha os detalhes na caixa de diálogo:
    • File name: digite o nome do arquivo XML (não requer o 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 recurso são compatíveis com apenas um tipo de elemento raiz. Portanto, dependendo do tipo selecionado acima, isso pode não ser editável.
    • Source set: selecione o conjunto de origem onde 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. Portanto, não edite isso, a menos que você queira adicionar qualificadores de configuração ao nome do diretório manualmente (consulte Available qualifiers).
    • Available qualifiers: em vez de digitar qualificadores de configuração para o diretório de layout, você pode adicioná-los clicando em um qualificador na lista à esquerda e, em seguida, clicando em Add .
  3. Depois de adicionar todos os qualificadores desejados, clique em OK.

Dica: clique com o botão direito do mouse em um diretório de recursos existente na pasta res e selecione New > type-name resource file. Isso abre uma versão simplificada da caixa de diálogo New Resource File, que é específica do tipo de recurso desejado.

Dica: 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. Você pode manter os três arquivos XML separados se 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 in-line 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 in-line complexos.

Adicionar um diretório de recursos

Se você precisar adicionar um novo diretório de recursos, siga estas etapas:

  1. Clique no módulo do app de destino na janela Project e selecione File > New > Android resource directory.

  2. Preencha os detalhes na caixa de diálogo:
    • Directory name: o diretório precisa ser nomeado de uma maneira específica para os qualificadores de combinação de configuração e tipo de recurso. Portanto, não edite isso, 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 criar.
    • Source set: selecione o conjunto de origem onde você quer o layout.
    • Available qualifiers: em vez de digitar qualificadores de configuração para o diretório de layout, você pode adicioná-los clicando em um qualificador na lista à esquerda e, em seguida, clicando em Add .
  3. Depois de adicionar todos os qualificadores desejados, clique em OK.

Alterar seu diretório de recursos

Por padrão, seus recursos estão localizados em module-name/src/source-set-name/res/. Por exemplo, os recursos do conjunto de origem principal do seu módulo estão em src/main/res/ e os recursos do conjunto de origem de depuração estão em src/debug/res/.

No entanto, você pode alterar esses caminhos para qualquer outro local (relativo ao arquivo build.gradle) com a propriedade res.srcDirs no bloco sourceSets {}. Exemplo:

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

Você também pode especificar vários diretórios de recursos para um conjunto de origem e, então, as ferramentas de compilação serão mescladas. Exemplo:

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

Para mais informações, leia sobre conjuntos de origem.

Mescla de recursos

Os recursos do arquivo do APK final podem vir de três origens diferentes:

Quando todos os recursos de cada conjunto de origem ou biblioteca são exclusivos, todos eles são adicionados ao APK final. Um recurso será considerado exclusivo se o nome do arquivo for exclusivo no diretório do tipo de recurso e no qualificador do recurso (se definido).

Se houver duas ou mais versões correspondentes do mesmo recurso, somente uma versão será incluída no APK final. As ferramentas de compilação selecionam qual versão manter com base na seguinte ordem de prioridade (prioridade mais alta à esquerda):

variante de compilação > tipo de compilação > variação de produtos > conjunto de origem principal > dependências de biblioteca

Por exemplo, se o conjunto de origem principal contiver:

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

E o tipo de compilação de depuração contiver:

  • res/layout/foo.xml

Então, o APK final incluirá res/layout/foo.xml do tipo de compilação de depuração e res/layout-land/foo.xml do conjunto de origem principal.

No entanto, se sua configuração de compilação especificar várias pastas de recursos para um determinado conjunto de origem e houver conflitos entre essas origens, ocorrerá um erro e a mescla falhará porque cada diretório de recursos tem a mesma prioridade.