Glide是否有加载PNG和SVG的方法?

我使用滑翔到一些图像加载

到一些我的ImageViewS,我知道它能够处理图像像PNG或者JPG因为它可以处理SVG

据我所知,加载这两种图像的方式有所不同。喜欢:

Glide.with(mContext)

.load("URL")

.into(cardHolder.iv_card);

GenericRequestBuilder<Uri, InputStream, SVG, PictureDrawable> 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<Uri>());

requestBuilder

.diskCacheStrategy(DiskCacheStrategy.NONE)

.load(Uri.parse("URL"))

.into(cardHolder.iv_card);

而且,如果我尝试使用第一种方法加载SVG,它将无法正常工作。如果我尝试使用第二种方法加载PNG或JPG,它也将无法正常工作。

我从中获取这些图像的服务器在下载之前不会告诉我图像类型。这是REST服务器,将以方式检索资源"http://foo.bar/resource"。知道图像类型的唯一方法是读取HEAD响应。

回答:

您可以一起使用Glide和AndroidSVG来实现您的目标。

有来自Glide的SVG示例。样例

设置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<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>());

将RequestBuilder与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);

这样,您就可以实现自己的目标。我希望这是有帮助的。

以上是 Glide是否有加载PNG和SVG的方法? 的全部内容, 来源链接: utcz.com/qa/418719.html

回到顶部