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.

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.

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:

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-hdpi, drawable-xhdpi, drawable-xxhdpi e 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:

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.

Algumas considerações:
- Esse plugin não move seus arquivos;
- Esse plugin não cria pastas.
Instalação
- Faça o download da última versão do Android File Grouping aqui;
- Execute o Android Studio;
- Selecione o menu File -> Settings -> Plugins;
- Clique em Install from disk;
- Selecione o arquivo Android File Grouping.zip;
- Reinicie o Android Studio.
Como usar
- Clique com o botão direito na pasta de layout (ou em qualquer outro recurso);
- 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/