studio - android: carga el archivo svg de la web y muéstralo en la vista de imagen
use svg in imageview android (4)
Actualización: para la versión más nueva, consulte las muestras de Glide ( https://github.com/bumptech/glide/tree/master/samples/svg )
-
Puede usar Glide ( https://github.com/bumptech/glide/tree/v3.6.0 ) y AndroidSVG ( https://bitbucket.org/paullebeau/androidsvg ).
También hay una muestra de Glide: https://github.com/bumptech/glide/tree/v3.6.0/samples/svg/src/main/java/com/bumptech/svgsample/app
Configurar GenericRequestBuilder
requestBuilder = Glide.with(mActivity)
.using(Glide.buildStreamModelLoader(Uri.class, mActivity), InputStream.class)
.from(Uri.class)
.as(SVG.class)
.transcode(new SvgDrawableTranscoder(), PictureDrawable.class)
.sourceEncoder(new StreamEncoder())
.cacheDecoder(new FileToStreamDecoder<SVG>(new SvgDecoder()))
.decoder(new SvgDecoder())
.placeholder(R.drawable.ic_facebook)
.error(R.drawable.ic_web)
.animate(android.R.anim.fade_in)
.listener(new SvgSoftwareLayerSetter<Uri>());
Use RequestBuilder con uri
Uri uri = Uri.parse("https://de.wikipedia.org/wiki/Scalable_Vector_Graphics#/media/File:SVG_logo.svg");
requestBuilder
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
// SVG cannot be serialized so it''s not worth to cache it
.load(uri)
.into(mImageView);
quiero cargar el archivo svg de la web y mostrar este archivo en una imagen Vista, para PNG normal u otros archivos de imagen que uso la biblioteca Picasso , ¿es posible usar esta biblioteca para archivos svg? ¿Hay alguna manera de cargar el archivo svg de la web y mostrarlo en la vista de imagen? utilizo la biblioteca svg-android para mostrar archivos svg pero no sé cómo obtener una imagen svg de la web, todos los ejemplos usan archivos locales.
Consulte Tener un problema en el dispositivo real usando la imagen vectorial en Android. SVG-android
En la publicación de los usuarios, hace una pregunta similar y sugiere que use:
Cree una variable miembro para ImageView en su archivo de diseño;
private ImageView mImageView;
// intialize in onCreate(Bundle savedInstanceState)
mImageView = (ImageView) findViewById(R.id.image_view);
Descargar la imagen
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);
}
}
Luego aplique el dibujo a la vista de imagen
@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 está disponible en https://github.com/pents90/svg-android
Puedes usar esta biblioteca
https://github.com/2coffees1team/GlideToVectorYou
Como él dice: "La biblioteca está basada en Glide y ofrece las mismas funcionalidades + soporte de svg".
Utilice esta
Glide based library
cargando xml
Agregar dependencia
compile ''com.github.ar-android:AndroidSvgLoader:1.0.0''
para la última dependencia de Android Gradle use esto en su lugar
implementation ''com.github.ar-android:AndroidSvgLoader:1.0.0''
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/ivimage"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_item);
ImageView image = (ImageView) findViewById(R.id.ivimage);
SvgLoader.pluck()
.with(this)
.setPlaceHolder(R.mipmap.ic_launcher, R.mipmap.ic_launcher)
.load("http://www.clker.com/cliparts/u/Z/2/b/a/6/android-toy-h.svg", image);
}
@Override protected void onDestroy() {
super.onDestroy();
SvgLoader.pluck().close();
}
}