Estrutura de Resources Alternativa para Projetos Android
Todos nós sabemos como a estrutura de recursos (Resource — Res) de um projeto Android 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 arquivos tende a crescer rapidamente e se torna difícil de navegar e localizar um determinado arquivo.
Opção 1: Configurando o Gradle
No caso de suas telas consistirem em um grande número de layouts, drawables e dimensions — faz sentido criar uma pasta separada de recursos (Resource — Res) para cada tela.
Como você pode ver na imagem acima, nós 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:
Esta pasta consiste em vários arquivos de layout (xml). Por isso, criamos uma pasta chat e movemos todo o conteúdo relacionado ao chat para dentro dela. Ela também tem muitas imagens que são usadas somente nesta tela, por isso também movemos os arquivos de imagem para dentro da pasta chat: drawable-hdpi, drawable-xhdpi, drawable-xxhdpi e drawable-xxxhdpi folders.
Quando chegar a hora de implementar um layout landscape ou especifico para tablet, podemos simplesmente criar uma pasta layout-land ou layout-sw720dp dentro da pasta chat.
Como declarar uma pasta de recursos?
Abra o arquivo app.gradle e declare um sourceSets dentro da seção android.
sourceSets {
main {
res.srcDirs = [
'src/main/res-main',
'src/main/res-screen/about',
'src/main/res-screen/chat',
'src/main/res-screen/event-detail',
'src/main/res-screen/event-list',
'src/main/res-screen/home',
'src/main/res-screen/login',
]
}
}
Em vez de declarar cada pasta manualmente, você pode fazer um script para adicionar todas as sub pastas de uma determinada pasta de srcDirs.
sourceSets {
main {
file('src/main/res-screen')
.listFiles()
.each { res.srcDirs += it.path }
}
}
Importante! Só funciona se você estiver no “Project view” do Android Studio.
Opção 2: Android File Grouping Plugin
Além da forma previamente citada, também é possível alcançar o mesmo resultado utilizando 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 ultima 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 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 lhe ajudar.
FAQ
Eu tive um erro “URI is not Registered”. Para resolver:
- No Android Studio, clique em Menu, File, Invalidate Caches / Restart.
- Espere o projeto indexar novamente.
Créditos
Este artigo é uma tradução e adaptação deste artigo e deste outro artigo escrito por Dmytro Danylyk. Como uma adaptação, tenha em mente que ele não é fiel as versões originais.