Можно ли использовать подпапки в чертежах в Android?

В моем приложении есть несколько папок и подпапок с изображениями. Они внутри чертежей. Как я могу получить изображения из подпапок drawables?

Пример:

drawable> действия> спорт> soccer.png

Как я могу получить это фото "soccer.png"?

Любая помощь приветствуется.

Спасибо!


person Carlos Pereira    schedule 27.01.2012    source источник


Ответы (2)


Нет, механизм ресурсов Android не поддерживает подпапки в каталоге с возможностью рисования, вы не можете его разместить.

Я думаю, что если у вас есть подпапка с любыми элементами в ней в папке res/drawable, это приведет к сбою компилятора ресурсов, что предотвратит правильное создание файла R.java.

Единственное, что нужно сделать - это поместить изображения в плоские имена, например, drawable_actions_sports_soccer.png.

person user370305    schedule 27.01.2012
comment
Спасибо! Жаль, что это невозможно! знак равно - person Carlos Pereira; 28.01.2012

Теперь это (вроде) возможно с помощью Android Studio и Gradle.

Хотя подпапки по-прежнему невозможны, можно разделить ресурсы на разные наборы и получить их объединено системой сборки.

В качестве примера, чтобы упростить мой проект, я хотел сохранить чертежи для конкретных тем отдельно от стандартных чертежей.

Я создал новую папку ресурсов с именем res_lighttheme, как показано на рисунке ниже.

Структура папки

Затем я добавил указатель на эту папку в свой файл build.gradle вот так. Чтобы добавить больше одной, просто добавьте еще одну строку к определению.

Построить Gradle

В результате ОБЕ папки считаются допустимыми местами назначения для ресурсов. В случае конфликта будет сгенерирована ошибка сборки. т.е. если в обе папки включен один и тот же ресурс.

person Kuffs    schedule 11.11.2013
comment
внутренняя линия неправильная. Это должно быть: srcDirs = ['src / main / res', 'src / main / your_res_folder'] и должно включать вашу папку res по умолчанию. - person Chris623; 11.11.2015
comment
Не обязательно. Ваше решение заменяет все исходные каталоги. Мой добавляет новые к уже существующим (например, по умолчанию). Ни один из методов не является неправильным, но мое решение совершенно верно и работает. - person Kuffs; 11.11.2015
comment
ваш метод устарел, он выдает ошибку градиента, поэтому с этого момента он должен быть srcDirs. - person Chris623; 11.11.2015
comment
Он по-прежнему отлично работает в моих проектах, но ответ - 2 года назад, поэтому сказать, что он неверен, немного придирчив. Кроме того, в документации нет упоминания об устаревании, где все еще приводится пример с использованием srcDir .: docs.gradle.org/current/userguide/java_plugin.html - person Kuffs; 11.11.2015
comment
Метод не устарел. Работает отлично. Кроме того, это тоже работает: res.srcDirs + = 'src / main / res_myotherdir' - person Sinan Ceylan; 25.04.2019