Новые версии Android Studio и только две drawable каталог-drawable и drawable-v21

с более старыми версиями Android Studio все папки drawable bucket были созданы по умолчанию (т. е. drawable-mdpi, drawable-hdpi и т. д.). В более новых версиях Android Studio он предоставляет только drawable и drawable-v21. Почему так?

есть ли причина, по которой Android (в своей бесконечной мудрости) больше не дает вам отдельные папки ведра?

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

1 ответов


спасибо всем, кто пытался помочь. Вы помогли мне прийти к окончательному ответу, но ни одно решение не было правильным. @user3137702 был, вероятно, самым близким, так как он связан со всем переходом к векторам/SVGs. Я не мог найти окончательного ответа, например, что-то прямо из Google (хотя я думаю, что это там), но из того, что я собрал из кучи статей, вероятно, есть причина, по которой они это делают.

для начала, похоже, это началось в Android-Студия 1.4. Я сейчас в 1.5. Кажется, что Android идет в направление больше не нуждается в вас, чтобы создать свои собственные папки плотности (т. е. с mdpi, ипчр, и т. д.) для drawables (mipmaps отличается, поэтому, пожалуйста, не путайте это с тем, о чем я говорю). Начиная с Android Studio 1.4, он возьмет SVGs, которые вы поместите в обычную папку drawable (как и в папке v21), преобразует их в PNGs и помещает их в автоматически сгенерированные папки плотности для вас во время последовательности сборки (поэтому Gradle делает это для вас, по сути) для всех версий старше API 21. Для 21 и выше SVG поддерживается по-разному, что является совершенно другой темой. Но это по существу делает поддержку SVG обратно совместимой с API 1!!!

тем не менее, есть большой подвох. Это преобразование SVG не всегда так успешно, как вы могли бы надеяться. Он поддерживает только подмножество SVG-файлов, поэтому в зависимости от того, как вы его сохраняете (т. е. какие настройки применяются при сохранении), он может не отображаться правильно. Даже часто используемые настройки, такие как градиентные и шаблонные заливки, локальные ссылки IRI и преобразования, не поддерживаются (пока). Если вы работаете с файлами SVG, которые вы не создавали, у вас, вероятно, возникнут проблемы с их импортом. Если вы или кто-то, с кем вы работаете, непосредственно генерирует их, вам может потребоваться поэкспериментировать с тем, как вы сохраняете файлы, и вы должны часто тестировать сборки на более старых версиях Android, чтобы убедиться, что все получилось так, как ожидалось.

для импорта SVGs в Android Studio 1.4+ выполните следующие простые действия:

  1. щелкните правой кнопкой мыши на папке res/drawable
  2. Выберите "Новый"
  3. Выберите "Вектор-Актив"
  4. на этом этапе вы можете выбрать "значок материала", который работает действительно хорошо, и есть куча красивых" бесплатных " значков, которые вы можете выберите из. Для инди-разработчиков, без поддержки дизайна значков, это здорово!
  5. или вы можете выбрать "локальный файл SVG"
  6. затем выберите SVG из любой опции с опцией" выбрать". Предупреждение: здесь это может пойти не так, если SVG, который вы импортируете, не сохранен должным образом.
  7. Нажмите "Next"
  8. убедитесь, что он сохраняет в нужном месте, а затем нажмите кнопку "Готово"
  9. на данный момент он справочный с: android: icon= " @drawable / ic_imagename "(используя ваше имя изображения вместо ic_imagename, конечно)

ответ@CommonsWare был очень полезен в приводя к правильному решению, но из того, что я видел, генерируя несколько вариантов новых проектов из разных настроек поддержки шаблонов и версий, не было никакого способа на самом деле автоматически генерировать старые папки плотности. Здесь определенно происходит больше, чем просто выбор другой версии шаблона. Но, как он сказал, в зависимости от того, какой шаблон/версию вы выбираете, вы можете получить другой набор этих двух типов папок drawable. Но конкретно к моему вопросу, Android Студия, похоже, делает акцент на этом новом подходе, не создавая свои собственные индивидуальные папки с плотностью.

Это довольно круто, ИМО, но он все еще нуждается в некоторой работе. В практическом плане мне, вероятно, все равно нужно будет добавить папки drawable density для поддержки всех изображений, с которыми я работаю, пока этот механизм не станет немного более поддерживающим все типы визуализации SVG.

и еще один лакомый кусочек-потому что все это обрабатывается через Gradle (The фактическая генерация папок плотности) вы можете добавить настройки сборки через механизм вкуса, чтобы ограничить, какие папки плотности вы хотите создать. Поэтому, если, например, вы чувствуете, что изображения mdpi достигли конца своей полезности для вашей конкретной пользовательской базы и хотели бы оставить этот размер/плотность из вашего приложения, чтобы сбрить пару МБ от размера приложения, вы можете установить это в вкусе сборки Gradle.