Предлагаю вашему вниманию перевод статьи «Android Project Structure — alternative way». Поблагодарить автора оригинальной статьи можно тут.
Intro
Все мы знаем, как выглядит структура Android проекта – поместить все изображения в этот каталог, все файлы разметки в тот каталог. Но… во время разработки проекта количество файлов растет очень быстро и становится трудно ориентироваться и переходить к нужному файлу.
Структура типичного Android проекта
Каталог ресурсов для экрана
В случае если экран содержит большое количество файлов разметки, изображений, размеров – имеет смысл создать отдельные каталоги ресурсов для каждого экрана.
Структура — каталог ресурсов для каждого экрана
Как вы можете видеть на скрине сверху, мы имеем два корневых каталога внутри каталога main:
- res-main содержит все общие ресурсы, которые используются на более, чем одном экране.
- res-screen содержит каталоги ресурсов для каждого экрана, например, about, chat, event details, event list, home, login
Давайте заглянем внутрь папки ресурсов для экрана chat.
Сам чат состоит из нескольких xml layouts файлов, поэтому мы создали каталог chat layout и поместили туда эти файлы. Также имеется множество .png изображений, которые используются только на экране чата, поэтому мы поместили все эти изображения в подкаталоги drawable-hdpi, drawable-xhdpi, drawable-xxhdpi и drawable-xxxhdpi каталога chat.
Когда настанет время реализовать альбомную ориентацию или версию чата для планшета, мы создадим каталоги layout-land и layout-sw720dp внутри каталога ресурсов для экрана chat.
Как объявить каталог ресурсов для экрана?
Откройте файл app.gradle и объявите sourceSets внутри секции 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',
]
}
}
Примечание: это работает только в режиме просмотра Project.
Заключение
Если вы работаете над большим проектом и хотите классифицировать ваши каталоги, легко определять какой файл разметки, изображение, значение и т.д. принадлежит какому экрану, используйте каталоги ресурсов для каждого экрана.
Автор: qwert2603