Qualquer aplicativo Android que você desenvolver terá que incluir algum tipo de Resource, como seqüências de caracteres, recursos de imagem (mesmo que seja apenas o ícone do aplicativo) e cores.

Neste tutorial, você vai aprender sobre os Recourses no Android e como usá-los em seus aplicativos para exibir conteúdo para usuários, adaptar dispositivos de tamanhos diferentes e oferecer suporte a usuários em vários idiomas.

Adicionando Resources (Recursos) a Projetos

Ao criar um projeto no Android Studio, você vai ver dois diretórios principais em seu projeto para arquivos Java e Res.

Res significa recursos e como o nome indica, contém os recursos para o projeto. No contexto do Android, um recurso é um arquivo que representa algo que pode ser desenhado na tela, um arquivo de layout para suas classes ou um valor que pode ser acessado em seu aplicativo, como um valor hexadecimal ou cor.

Vamos ver sobre os vários tipos de recursos disponíveis para seu aplicativo.

Tipos

Para usar os Resources em um projeto Android, você precisa organizá-los em subdiretórios na pasta res. A estrutura do diretório de recursos de um projeto Android padrão pode ser algo como:

Há um número limitado de nomes de diretório que são suportados pelo Sistema de Recursos do Android e entendê-los é extremamente necessário.

Vamos dar uma olhada neles com mais detalhes.

animator: O diretório animator pode conter arquivos XML que definem animações para os objetos da View no seu aplicativo. Em vez de definir animações repetidas vezes em seu código Java, você pode importar um arquivo XML de animator em todos os lugares em que precisa usar uma animação específica. Se você decidir alterar essa animação mais tarde, poderá alterá-la em um local no seu aplicativo em vez de em muitos.

color: Embora você possa salvar valores hexadecimais de cores no diretório values, o diretório de cores é usado para armazenar arquivos XML que contém informações de estado com cores específicas. Isso é útil se você precisar alterar a cor do texto ou plano de fundo de uma View quando o usuário interagir.

drawable: Se o seu aplicativo exigir recursos de imagem, como JPGs e PNGs, você precisará colocá-los na pasta drawable. Também é onde você coloca arquivos XML que definem drawables em forma de vetores.

mipmap: Semelhante ao drawable, o diretório mipmap aceita imagens em bitmap, mas é usado especificamente para o ícone do aplicativo.

layout: O diretório de layout contém os arquivos XML que definem as interfaces do usuário do seu aplicativo.

menu: Os arquivos XML de menu são usados ​​para definir a barra de ação, menus e submenus de navegação. Esses recursos são colocados no diretório de recursos do menu.

raw/asset: O diretório raw é usado para armazenar arquivos brutos para seu aplicativo, como arquivos de áudio, vídeo e texto. Isso fornece uma maneira fácil de acessar arquivos, mas se você precisar acessar o nome do arquivo original ou a hierarquia de diretórios, deve considerar colocar seus arquivos no diretório asset do Android.

xml: Esse diretório contém arquivos XML usados ​​pelo Android para várias tarefas, como definir configurações de pesquisa ou recursos externos, como o uso do Android Auto.

Values

Embora a lista acima de diretórios de recursos disponíveis seja bastante longa, há mais um diretório que você usará frequentemente como desenvolvedor Android, o values.

O diretório values pode conter diferentes arquivos XML que consistem em valores simples que são usados em seus aplicativos, incluindo:

arrays.xml: Objetos de matriz simples que podem ser lidos em seu aplicativo.

colors.xml: Valores hexadecimais de cor nomeados que podem ser usados ​​em vários locais no seu aplicativo.

dimens.xml: As dimensões podem definir qualquer coisa relacionada ao tamanho no Android, incluindo tamanhos de texto, margens e padding.

integers.xml: Se houver números inteiros específicos que você precisa usar em seu aplicativo, você pode armazená-los no arquivo integers.xml para que eles sejam fáceis de localizar e alterar posteriormente em seu processo de desenvolvimento.

strings.xml: As Strings são uma necessidade em qualquer aplicativo Android que você construa. Em vez de espalhá-los pela sua base de código, você pode manter as strings no arquivo strings.xml.

plurals.xml: Similar as Strings, o plural permite que você forneça Strings alternativas quando um número é passado para a função de recuperação. Isso lida com situações em que um quantificador de cadeia de caracteres deve ser alterado com base no número de itens que ele representa.

styes.xml: Qualquer aplicativo que você cria precisa de uma aparência consistente e isso pode ser obtido com o uso do arquivo styles.xml. Usando estilos, você pode substituir a aparência padrão de componentes e predefinir atributos que podem ser associados a diferentes objetos da View em arquivos de layout.

Como você pode ver, a estrutura de Resources no Android é extensa. À medida que você desenvolve seus aplicativos, você encontrará mais e mais usos para arquivos e valores de recursos para tornar o desenvolvimento e a manutenção de seus aplicativos mais rápidos e fáceis.

Acessando os Resources (Recursos)

Agora que você sabe como adicionar recursos ao seu aplicativo, você precisa ser capaz de acessá-los. Todos os recursos armazenados em seu aplicativo recebem automaticamente um nome identificável que consiste no tipo de recurso, como drawable ou layout, e o ID no arquivo R do aplicativo.

O arquivo R é um arquivo gerado pela ferramenta Android Asset Packaging, ou AAPT, durante a compilação. Esse nome gerado pode ser usado para acessar o recurso em seu código Java ou em outro arquivo XML.

Pelo Java

Muitos objetos no Android são criados com identificadores de recursos e aceitam o ID de um recurso para usar-lo. Um exemplo disso é definir um ImageView para usar um recurso drawable passando o ID.

imageView.setImageResource(R.drawable.minhaImagem);

Da mesma forma, um objeto MediaPlayer (usado para reproduzir mídia de áudio ou vídeo) pode ser criado para reproduzir um arquivo de mídia passando o ID do arquivo.

MediaPlayer.create(getActivity(), R.raw.minhaMusica)

Enquanto um grande número de objetos aceita um ID de recurso, há momentos em que você deseja recuperar o recurso original em seu código. Você pode fazer isso usando o método getResources() disponível no objeto Context do Android. Isso retorna um objeto Resources com vários métodos para acessar os recursos, como getColor() e getDrawable().

getResources().getColor(R.color.colorPrimary);
getResources().getDrawable(R.drawable.minhaImagem);

Pelo XML

A maior parte do tempo, quando você estiver usando recursos, ele estará em outros arquivos XML.

Ao definir cores, estilos, texto ou qualquer outro recurso usado em vários locais do aplicativo, a manutenção é mais simples, permitindo que você altere um valor e o preencha em todo o aplicativo. Felizmente, você pode acessar recursos em um atributo XML passando o ID para um campo que espera um ID de recurso.

<TextView
    android:id="@+id/tv_test"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    android:text="@string/title"
    style="@style/TitleStyle"/>

Resources (Recursos) Alternativos

Quase todos os aplicativos que você cria devem lidar com vários tamanhos de dispositivos, configurações e idiomas do usuário. Ao utilizar qualificadores específicos ao final de um diretório de recursos, o sistema Android prioriza esses recursos quando determinadas condições são atendidas.

Densidade de tela

Para evitar a distorsão de imagens, as imagens Bitmap criadas para seus aplicativos devem ser feitos para as densidades de pixel específicas. Ao anexar -ldpi, -mdpi, -hdpi e outros qualificadores aos diretórios, como visto para mipmaps no início deste artigo, o sistema Android sabe quais recursos usar para qualquer dispositivo em particular executando seu aplicativo.

Idiomas do usuário

Você pode criar diretórios values individuais para cada idioma suportado pelo aplicativo, acrescentando um código de idioma ao final do nome do diretório, como values-fr ou values-es para francês e espanhol.

Quando um usuário tem seu idioma configurado para um desses idiomas, o sistema fornece quaisquer valores no novo diretório de recursos para o usuário, em vez dos padrões. Isso é útil para substituir recursos de String por traduções adequadas.

Suporte para Tablet e Orientação

Você pode anexar -land a um diretório de recursos para que esses valores sobreponham os padrões quando um dispositivo estiver no modo paisagem. Você também pode definir uma largura mínima de um dispositivo para que um diretório de recursos substitua o padrão para oferecer suporte a tablets, acrescentando -sw600dp para tablets de tamanho médio (como o Nexus 7) e -sw720dp para tablets maiores.

Conclusão

Qualquer aplicativo que você queira criar incluirá recursos e entenderá como acessá-los e oferecer suporte a várias configurações de dispositivos é uma parte importante de ser um desenvolvedor Android.

Neste artigo, você aprendeu que tipo de recursos pode ser incluído em um aplicativo, como acessá-los em Java e XML e como substituir recursos em situações específicas.


Fillipe Cordeiro
Fillipe Cordeiro

Engenheiro da computação e desenvolvedor de software a quase 10 anos, com experiência em tecnologias como Java, Python e Android. Agora, quero te ajudar a mergulhar no universo do Desenvolvimento Android.