Glide a-t-il une méthode pour charger les fichiers PNG et SVG?

J’utilise Glide pour charger des images de manière asynchrone dans certaines de mes images ImageView , et je sais qu’il peut gérer des images telles que PNG ou JPG comme il peut gérer des SVG .

À ma connaissance, la façon dont je charge ces deux types d’images est différente. Comme:

Chargement d’images “normales”

 Glide.with(mContext) .load("URL") .into(cardHolder.iv_card); 

Chargement SVG

 GenericRequestBuilder requestBuilder = Glide.with(mContext) .using(Glide.buildStreamModelLoader(Uri.class, mContext), InputStream.class) .from(Uri.class) .as(SVG.class) .transcode(new SvgDrawableTranscoder(), PictureDrawable.class) .sourceEncoder(new StreamEncoder()) .cacheDecoder(new FileToStreamDecoder(new SVGDecoder())) .decoder(new SVGDecoder()) .listener(new SvgSoftwareLayerSetter()); requestBuilder .diskCacheStrategy(DiskCacheStrategy.NONE) .load(Uri.parse("URL")) .into(cardHolder.iv_card); 

Et si j’essaie de charger SVG avec la première méthode, cela ne fonctionnera pas. Si j’essaie de charger PNG ou JPG avec la deuxième méthode, cela ne fonctionnera pas non plus.

Existe-t-il un moyen générique de charger les deux types d’images à l’aide de Glide?

Le serveur sur lequel je vais chercher ces images ne me dit pas le type d’image avant de le télécharger. C’est un serveur REST et la ressource sera récupérée à la manière de "http://foo.bar/resource" . La seule façon de connaître le type d’image consiste à lire la réponse HEAD.

Vous pouvez utiliser Glide & AndroidSVG ensemble pour atteindre votre objective.

Il y a un échantillon de Glide pour SVG. Exemple d’exemple

Configurer RequestBuilder

 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(new SvgDecoder())) .decoder(new SvgDecoder()) .placeholder(R.drawable.ic_facebook) .error(R.drawable.ic_web) .animate(android.R.anim.fade_in) .listener(new SvgSoftwareLayerSetter()); 

Utiliser RequestBuilder avec uri

 Uri uri = Uri.parse("http://upload.wikimedia.org/wikipedia/commons/e/e8/Svg_example3.svg"); requestBuilder .diskCacheStrategy(DiskCacheStrategy.SOURCE) // SVG cannot be serialized so it's not worth to cache it .load(uri) .into(mImageView); 

De cette façon, vous pouvez atteindre votre objective. J’espère que ceci est utile.