2017-02-03 6 views
4

ピカソでsdカードにダウンロードしたsvgファイルを読み込もうとしていますが、動作しません。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

ダウンロードした.svgをimageViewに読み込むことはできますか?

+1

まず、 'getExternalStoragePublicDirectoryは()' [リムーバブルストレージ]とは何の関係もありません(https://commonsware.com/blog/2014/04/09/storage-situation-removable -storage.html)をインストールしてください。第二に、ピカソがSVGをサポートしているとは思わない。 – CommonsWare

答えて

0

アンドロイドアプリケーションでSVGを使用することはできません。 (はい...私たちはSVGファイルを操作するために使用できるサードパーティのライブラリがある)

出典:Android — Working with VectorDrawable

VectorDrawable画像は(直線、曲線などのような)画像のすべての情報が含まれている単純なXMLファイルですそれらのそれぞれに関連付けられた色を含む。 vectorDrawableを使用する最大の利点は、異なるスクリーンデバイスに対して1つのイメージしか必要ないことです。これにより、最終的な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(); 
    } 
関連する問題