Задний план
Я заметил, что Android теперь поддерживает какой-то векторный рисунок через класс под названием « VectorDrawable » (а также AnimatedVectorDrawable , BTW). Я узнал об этом, посмотрев, что нового в Android-Studio .
Интересно , если это будет конец того , чтобы положить несколько файлов в несколько папок ( mdpi
, hdpi
, xhdpi
и т.д.). Это было бы здорово и в некоторых случаях могло бы уменьшить размер приложений.
Вопросы
Я хотел бы задать несколько вопросов об этом новом классе:
Можно ли использовать его в более старых версиях Android, может быть, через библиотеку даже библиотеки поддержки Google?
Я не знаком с тем, как это работает, но может ли Lollipop обрабатывать файлы SVG? Может ли он делать что-нибудь, доступное для файлов SVG?
Есть ли какой-нибудь образец / учебник / видео по его использованию, кроме документации, которую я нашел?
источник
s a very usefull tool but I
таком случае он получил неправильный результат, и я не знаю, что не так ... Хммм, для дальнейшего выпуска я бы хотел, чтобы этот инструмент уведомлял о плохом формате ... Если бы я использовал чистые svg-файлы с 3-сторонними библиотеками, все в порядке ...Ответы:
ОБНОВЛЕНИЕ Март 2016 г.
По Library Поддержка Android 23.2.1 обновление, поддержка Векторные и анимированные вводимого коэффициента Вектор вводимого коэффициента. (вы также можете использовать latestone для того же)
Обновите версию библиотеки в файле gradle.
compile 'com.android.support:recyclerview-v7:23.2.1'
Векторные рисунки позволяют заменять несколько ресурсов png одной векторной графикой , определенной в XML. В то время как ранее ограничивается леденец и высокоскоростными устройствами , как
VectorDrawable
иAnimatedVectorDrawable
теперь доступны с помощью двух новых библиотек поддержки поддержки: support-vector-drawable и animated-vector-drawable. новыйapp:srcCompat
атрибут для ссылки на векторные чертежи.Проверьте исходный код на github с некоторыми примерами .
Изменения в библиотеке appcompat v7:
Отменена зависимость от векторных ресурсов, чтобы разработчики, использующие библиотеку appcompat, не были вынуждены использовать
VectorDrawable
и связанные с ней флаги сборки.источник
compile
выше утверждение подразумевает, что проект использует,RecyclerView
что не всегда так.Обновление 2 : они снова включают его в библиотеке поддержки 23.4.0:
Проверьте это 23.4.0, доступный сейчас
Обновление : это не работает с версии 23.3.0. Подробности см. Здесь . Прокси-чертежи не работают.
app:srcCompat
иsetImageResource()
работать, однако.Поддержка Vector Drawable доступна в библиотеке поддержки версии 23.2 и выше. Однако, чтобы правильно использовать эти чертежи, на них нужно ссылаться косвенно.
Первым шагом было бы подтолкнуть
AppCompat
версию.compile 'com.android.support:appcompat-v7:23.2.0'
Во-вторых, включите поддержку Vector Drawable. Если вы используете плагин Gradle, 2.0+
android { defaultConfig { vectorDrawables.useSupportLibrary = true } }
В противном случае
android { defaultConfig { generatedDensities = [] } aaptOptions { additionalParameters "--no-version-vectors" } }
В-третьих , обратитесь к связанному ответу .
источник
MenuItem
, которое отлично работает.Вы можете попробовать эту библиотеку поддержки . Он поддерживает VectorDrawable и AnimatedVectorDrawable, представленные в Lollipop, с полной обратной совместимостью.
источник
Чтобы дополнить некоторые ответы здесь: да, вы можете получить поддержку для VectorDrawables до Lollipop , по крайней мере, частичную.
Насколько частичное? Это зависит от обстоятельств - я сделал эту диаграмму, чтобы помочь (действительно для библиотеки поддержки от 23.4.0 до - как минимум - 25.1.0).
источник
К сожалению, на данный момент VectorDrawable и AnimatedVectorDrawable недоступны в библиотеке поддержки. Но чтобы воспользоваться этой функцией в версиях Pre-Lollipop, вы можете использовать неофициальный бэкпорт под названием MrVector.
MrVector доступен в Github и будет поддерживать версии Android 7+.
Из официального Readme
Чтобы добавить зависимость MrVector, добавьте следующую строку в блок зависимостей build.gradle.
compile 'com.telly:mrvector:0.2.0'
Чтобы создать объект для рисования из векторного XML,
Надеюсь это поможет.
источник
Если вы используете VectorDrawable, Android Studio автоматически сгенерирует соответствующие файлы PNG (на основе ваших файлов XML) для версий Pre-Lollipop.
Обратите внимание, что эти сгенерированные файлы PNG считаются BitmapDrawables вместо VectorDrawables на устройствах с API ниже 21 и поэтому не могут быть анимированы или аналогичны на этих устройствах.
Дополнительные сведения см. В разделе «Обратная совместимость»: http://android-developers.blogspot.co.at/2015/09/android-studio-14.html
источник
Lollipop не может обрабатывать файлы SVG без сторонних библиотек.
Лучшее решение, которое я нашел, - это библиотека BetterVectorDrawable вместе с конвертером SVG в VectorDrawable .
BetterVectorDrawable - это реализация VectorDrawable для Android 4.0+ с настраиваемым откатом на Android 5.0+.
Конвертер SVG в VectorDrawable - это пакетный конвертер изображений SVG в файлы ресурсов Android VectorDrawable XML. Онлайн-версия
Ссылки указывают на файлы readmes, которые предоставляют достаточно информации о том, как использовать библиотеку и конвертер.
источник
В настоящее время в библиотеке поддержки нет VectorDrawables.
Funkystein прав - VectorDrawable похож на SVG, только поддерживает функции векторного рисования, которые наиболее востребованы, поэтому Android может сосредоточиться на производительности. pathData, например, имеет тот же формат, что и строка «d» SVG.
источник
Хорошая новость в том, что Google выпустила Android Support Library 23.2 Support Vector Drawables и Animated Vector Drawables!
Но спасибо тем, кто портировал эту библиотеку до Google!
Руководство по использованию:
Отсылайте " возраст векторов " от @chrisbanes
источник