SVG Vs PNG на Android
Каков наилучший способ работы с изображениями в Android. Недавно в Android Lollipop мы поддержали концепцию SVG (масштабируемая векторная графика). Каков наилучший способ работы с изображениями для поддержки всех разрешений PNG (размещение изображений в определенных ресурсах) или SVG (Малые размеры файлов, которые хорошо сжимаются, масштабируются до любого размера, не теряя ясности (кроме очень маленьких)).
Ответы
Ответ 1
Lollipop (API 21) не поддерживает SVG. Он поддерживает подмножество функций рисования путей SVG с помощью класса VectorDrawable. Этот класс в настоящее время не поддерживается appcompat, поэтому он доступен только в API 21.
Вам понадобятся PNG-изображения для более старых платформ, поэтому идеальным рабочим процессом является создание векторных исходных изображений, которые вы экспортируете в PNG для различных кодов DPI, и преобразование в формат VectorDrawable для устройств API 21 с использованием проекта типа svg2android.
Ответ 2
Вы можете использовать Android Support Library 23.2 или выше. Класс VectorDrawableCompat в библиотеке поддержки позволяет вам поддерживать VectorDrawable в Android 2.1 (уровень API 7) и выше. Для этого вам нужно изменить файл build.gradle перед запуском Vector Asset Studio, как описано в обратную совместимость библиотеки поддержки.
//For Gradle Plugin 2.0+
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
//For Gradle Plugin 1.5 or below
android {
defaultConfig {
// Stops the Gradle plugin’s automatic rasterization of vectors
generatedDensities = []
}
// Flag notifies aapt to keep the attribute IDs around
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
Чтобы поддерживать векторный графический и анимированный векторный чертеж на устройствах под управлением версий Android до версии 5.0 (уровень API 21), VectorDrawableCompat и AnimatedVectorDrawableCompat доступны через две новые библиотеки поддержки: поддерживаемые векторные и анимированные векторные векторы, соответственно.
Android Studio 1.4 представила ограниченную совместимость для векторных чертежей, создавая файлы PNG во время сборки. Тем не менее, векторная гибкая и анимированная векторная поддержка библиотек обеспечивает гибкость и широкую совместимость - это библиотека поддержки, поэтому вы можете использовать ее со всеми версиями платформы Android для Android 2.1 (API уровня 7+). Чтобы настроить приложение для использования библиотек векторной поддержки, добавьте элемент vectorDrawables в ваш файл build.gradle в модуле приложения.
Ответ 3
Lollipop не может обрабатывать файлы SVG без сторонних библиотек.
Лучшее решение, которое я нашел, - это библиотека BetterVectorDrawable вместе с конвертером SVG в VectorDrawable.
BetterVectorDrawable - это реализация VectorDrawable для Android 4. 0+ с настраиваемым режимом отката на Android 5. 0+.
Конвертер SVG в VectorDrawable - это пакетный конвертер изображений SVG в XML файлы ресурсов Android VectorDrawable. Онлайн версия
Ссылки указывают на readmes, которые предоставляют достаточно информации о том, как использовать lib и конвертер.