tutorial studio para online libreria implement imagenes glide enable crear bumptech android svg imageview picasso svg-android

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



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(); } }