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 и конвертер.