2017-02-03 15 views
4

Я пытаюсь загрузить файл svg, загруженный в SD-карту с помощью Picasso, но он не работает.Как загрузить файл SVG с SD-карты в ImageView?

File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath()+"/secciones.svg"); 
Picasso.with(context).load(file).into(holder.ivIcon); 

Я нашел этот вопрос раньше, но он загрузил файл из активов. Load a vector drawable into imageview from sd card

Можно ли загрузить загруженный .svg в изображениеView?

+1

Во-первых, 'getExternalStoragePublicDirectory()' не имеет ничего общего с [съемный носитель] (https://commonsware.com/blog/2014/04/09/storage-situation-removable -storage.html) на большинстве Android-устройств. Во-вторых, я не думаю, что Picasso поддерживает SVG. – CommonsWare

ответ

0

Мы не можем использовать SVG с приложением для Android. (Да ... есть 3-библиотеки сторонних, которые мы можем использовать для работы с SVG-файлов)

Источник: Android — Working with VectorDrawable

VectorDrawable изображения просто XML-файл, который содержит всю информацию изображения (например, линии, кривые и т.д.) и цвет, связанный с каждым из них. Самым большим преимуществом использования vectorDrawable является то, что нам нужно только одно изображение для разных экранных устройств. Это не только уменьшает размер финального apk, но и упрощает обслуживание проекта.

0

Вы можете достичь этого, преобразовывая SVG в drawable, прежде чем устанавливать его на ImageView. Для этого есть хорошая библиотека (немного старая и не управляемая) Here, однако я старался и работал для меня. Код, как показано ниже:

File dir = Environment.getExternalStorageDirectory(); 
    File yourFile = new File(dir, "your_file_path/filename.svg"); 
    try { 
     FileInputStream fileInputStream = new FileInputStream(yourFile); 
     SVG svg = SVGParser.getSVGFromInputStream(fileInputStream); 
     Drawable drawable = svg.createPictureDrawable(); 
     imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 
     imageView.setImageDrawable(drawable); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^