Android

27 jul, 2017

Estrutura alternativa de resources para projetos Android

Publicidade

A maioria sabe como a estrutura de recursos (Resource — Res) de um projeto Android se parece  –  coloque todas as imagens dentro desta pasta e todos os layouts dentro desta pasta – mas, durante o desenvolvimento de um projeto, o número de pastas tende a crescer rapidamente, tornando mais difícil a navegação e a localização de um determinado arquivo. Pensando nisso, tenho uma proposta de alternativa para essa estrutura.

Estrutura clássica de recursos, sem qualquer separação

Opção 01: Configurando o Gradle

No caso de suas telas terem um grande número de layouts, drawables e dimensions,   faz sentido criar uma pasta separada de recursos (Resource — Res) para cada uma delas.

Estrutura alternativa de recursos separada por tela do aplicativo

Como você pode ver na imagem acima, temos duas pastas principais dentro da pasta main:

  • res-main contém todos os recursos compartilhados por mais de uma tela;
  • res-screen contém todos os recursos específicos por tela. Por exemplo: about, chat, event, details, event list, home, login…

Vamos dar uma olhada no que temos dentro da pasta Chat:

Pasta de recursos chat

Essa pasta tem vários arquivos de layout (xml), por isso criamos uma pasta chat e movemos todo o seu conteúdo relacionado para dentro. Ela também tem muitas imagens que são usadas somente nessa tela. Por isso também movemos os arquivos de imagem para dentro da pasta chat, como drawable-hdpidrawable-xhdpi, drawable-xxhdpi drawable-xxxhdpi folders.

Quando chegar a hora de implementar um layout landscape ou específico para tablet, podemos simplesmente criar uma pasta layout-land ou layout-sw720dp dentro da chat.

Como declarar uma pasta de recursos?

Abra o arquivo app.gradle e declare um sourceSets dentro da seção Android.

Em vez de declarar cada uma, manualmente, você pode fazer um script para adicionar todas as sub pastas de uma determinada pasta de srcDirs:

Importante! Só funciona se você estiver no Project View do Android Studio

Opção 02: Android file grouping plugin

Além da forma previamente citada, também é possível alcançar o mesmo resultado usando o plugin Android File Grouping Plugin para exibir seus arquivos agrupados por pastas diferentes de recursos.

Android File Grouping Plugin

Algumas considerações:

  • Esse plugin não move seus arquivos;
  • Esse plugin não cria pastas.

Instalação

  1. Faça o download da última versão do Android File Grouping aqui;
  2. Execute o Android Studio;
  3. Selecione o menu File -> Settings -> Plugins;
  4. Clique em Install from disk;
  5. Selecione o arquivo Android File Grouping.zip;
  6. Reinicie o Android Studio.

Como usar

  1. Clique com o botão direito na pasta de layout (ou em qualquer outro recurso);
  2. No menu de contexto clique em Group/Ungroup.

Importante! Só funciona se você estiver no Project View do Android Studio.

Conclusão

Se você tem um grande projeto e quer organizar melhor seus recursos, talvez separar seus recursos por tela possa ser uma saída.

FAQ

Eu me deparei com um erro, URI is not Registered, e se acontecer resolva da seguinte maneira:

  • No Android Studio clique em Menu, File, Invalidate Caches / Restart;
  • Espere o projeto indexar novamente.

Créditos

Este artigo é uma adaptação de dois artigos escritos por Dmytro Danylyk. E por ser uma adaptação, ele não é estritamente fiel às versões originais.

***

Artigo originalmente publicado em: https://www.concrete.com.br/2017/07/19/alternativa-resources-android/