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

问题描述 投票:17回答:2

我正在使用Glide将某些图像异步加载到我的某些ImageView中,并且我知道它可以处理PNGJPG之类的图像。

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

正在加载“正常”图像

SVG

正在加载SVG

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

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

是否有使用Glide加载两种图像类型的通用方法?

我从中获取这些图像的服务器在下载图像之前不会告诉我图像类型。它是REST服务器,将以类似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); 的方式检索资源。知道图像类型的唯一方法是读取HEAD响应。

我正在使用Glide将某些图像异步加载到我的某些ImageView中,并且我知道它可以处理PNG或JPG之类的图像,因为它可以处理SVG。据我所知,加载方式... ...>

java android svg android-glide
2个回答
12
投票

您可以同时使用"http://foo.bar/resource"Glide来实现您的目标。

有来自Glide的SVG样本。AndroidSVG


4
投票

我添加了一个灵活的解码管道来解码图像或SVG,也许可以帮上忙!基于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);

© www.soinside.com 2019 - 2024. All rights reserved.