Загрузка и отображение SVG-картинок в Android

О преимуществах использования SVG формата изображений написано, например, здесь. Но на данный момент в Android SDK нет стандартного функционала, чтобы можно было эти картинки динамически загрузить в приложение, имея просто путь к файлу на SD-карте или в памяти телефона. Но есть сторонние решения.


Встроенный механизм в Android Studio

В студии начиная с версии X можно загружать в проект SVG-картинки с помощью встроенного механизма в .xml ресурсы:

ПКМ на папке drawable => New => Vector Asset => Local SVG file.

Использование:

android:src="@drawable/btn_image"

AndroidSVG

В библиотеке AndroidSVG (исходники) есть возможность загрузки из assets, а также по Uri.

Также, с помощью библиотеки Glide (исходники) можно загружать картинки из удаленного репозитория по Uri из интернета.

Поключение:

implementation 'com.caverock:androidsvg-aar:1.3'

Есть свой контрол SVGImageView:

Возможными значениями атрибута app:svg могут быть:

  • a filename in your assets folder, as in the above example
  • a resource reference such as @drawable/my_svg_file
  • a resource URI such as android.resource://com.example.myapplication/raw/my_svg_file

svg-android

Библиотека svg-android (исходники) позволяет загрузить SVG из assets, InputStream (файла), ресурса, строки и вернуть его как Drawable или Picture.

Говорят, библиотека поддерживает только формат SVG basic 1.1, который не поддерживается Inkspace, а рождается только в Adobe Illustrator.

Подключение (создать папку app/libs и добавить туда svg-android.jar из репозитория):

implementation files('libs/svg-android.jar')

Пример загрузки из ресурса (должен быть загружен как Vector Asset) в Picture:

Пример загрузки из файла в Drawable:

 


svg-android-2

Библиотека svg-android-2 (исходники) – форк предыдущего проекта. Уже понимает Inkscape, а также поддерживает другие фишки этого формата, о чем можно почитать на офф.странице.

Добавить комментарий

Ваш адрес email не будет опубликован.