2017-02-03 112 views
4

我想加載一個svg文件下載到與畢加索的SD卡,但它不起作用。如何將SD卡中的SVG文件加載到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

是否有可能加載下載到的ImageView的.SVG?

+1

首先,'getExternalStoragePublicDirectory()'無關與[移動存儲](https://commonsware.com/blog/2014/04/09/storage-situation-removable -storage.html)在大多數Android設備上。其次,我不認爲畢加索支持SVG。 – CommonsWare

回答

0

我們無法在android應用程序中使用SVG。 (是的......還有,我們可以使用與SVG文件工作的第三方庫)

來源:Android — Working with VectorDrawable

VectorDrawable圖像僅僅是XML文件,其中包含了圖像的所有信息(如直線,曲線等)以及與它們中的每一個相關的顏色。使用vectorDrawable的最大優勢是我們只需要一個圖像用於不同的屏幕設備。這不僅減小了最終apk的大小,還簡化了項目的維護。

0

在將SVG設置爲ImageView之前,您可以通過將SVG轉換爲drawable來實現此目的。爲此目的,有一個很好的圖書館(有點舊,沒有管理)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(); 
    }