我想从web加载svg文件,并在imageView上显示此文件,对于普通的png或其他图像文件,我使用
Picasso库
是否可以使用此库进行svg文件?还有什么办法从web加载svg文件并在图像视图上显示?我使用 svg-android库显示svg文件,但我不知道如何从web获取svg图像所有示例使用本地文件.
是否可以使用此库进行svg文件?还有什么办法从web加载svg文件并在图像视图上显示?我使用 svg-android库显示svg文件,但我不知道如何从web获取svg图像所有示例使用本地文件.
解决方法
请参考
Having issue on Real Device using vector image in android. SVG-android
在用户发帖他询问一个类似的问题,并建议他使用:
在布局文件中为ImageView创建一个成员变量;
private ImageView mImageView; // intialize in onCreate(Bundle savedInstanceState) mImageView = (ImageView) findViewById(R.id.image_view);
下载图片
private class HttpImageRequestTask extends AsyncTask<Void,Void,Drawable> { @Override protected Drawable doInBackground(Void... params) { try { final URL url = new URL("http://upload.wikimedia.org/wikipedia/commons/e/e8/Svg_example3.svg"); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); InputStream inputStream = urlConnection.getInputStream(); SVG svg = SVGParser. getSVGFromInputStream(inputStream); Drawable drawable = svg.createPictureDrawable(); return drawable; } catch (Exception e) { Log.e("MainActivity",e.getMessage(),e); } return null; } @Override protected void onPostExecute(Drawable drawable) { // Update the view updateImageView(drawable); } }
然后将drawable应用于Imageview
@SuppressLint("NewApi") private void updateImageView(Drawable drawable){ if(drawable != null){ // Try using your library and adding this layer type before switching your SVG parsing mImageView.setLayerType(View.LAYER_TYPE_SOFTWARE,null); mImageView.setImageDrawable(drawable); } }
SVGParser可在https://github.com/pents90/svg-android