当前位置: 首页 > 面试题库 >

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

郤飞英
2023-03-14
问题内容

我使用滑翔到一些图像加载 异步
到一些我的ImageViewS,我知道它能够处理图像像PNG或者JPG因为它可以处理SVG

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

加载“正常”图像

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

加载SVG

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,它也将无法正常工作。

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

我从中获取这些图像的服务器在下载之前不会告诉我图像类型。这是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);

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



 类似资料:
  • 本文向大家介绍Webpack实战加载SVG的方法,包括了Webpack实战加载SVG的方法的使用技巧和注意事项,需要的朋友参考一下 SVG 作为矢量图的一种标准格式,已经得到了各大浏览器的支持,它也成为了 Web 中矢量图的代名词。 在网页中采用 SVG 代替位图有如下好处: SVG 相对于位图更清晰,在任意缩放的情况下后不会破坏图形的清晰度,SVG 能方便地解决高分辨率屏幕下图像显示不清楚的问题

  • 本文向大家介绍SVG和PNG之间的区别,包括了SVG和PNG之间的区别的使用技巧和注意事项,需要的朋友参考一下 SVG和PNG都是一种用于存储图像的图像格式。SVG是基于矢量的图像格式,其中图像由一组数学数字表示,PNG是二进制图像格式,并且它使用无损压缩算法将图像表示为像素。 以下是SVG和PNG之间的重要区别。 序号 键 SVG PNG 1 代表 SVG代表可缩放矢量图形。 PNG代表可移植网

  • 我的Build.Gradle文件 UPD.这个简单的应用程序可以加载图片从互联网,但它不能加载图片从我的服务器。我的服务器的一些图片加载得很好,但其他的不是。我已经迷路了

  • 本文向大家介绍JavaScript 下载svg图片为png格式,包括了JavaScript 下载svg图片为png格式的使用技巧和注意事项,需要的朋友参考一下 1.遇到需要将svg下载的需求,网上找了一些代码,地址是这个https://github.com/exupero/saveSvgAsPng,但是不太好用,莫名的把网页所有的svg都下载了,于是在源码的基础上做了一些小的修改;代码如下所示 这

  • 当使用Apache Batik从SVG转换为PNG时,我有时会出现奇怪的错误。例如,对于这个SVGhttps://www.macstories.net/app/themes/macstories4/images/logo-shape-bw.svg它会抛出一个异常,但对于这个https://upload.wikimedia.org/wikipedia/commons/0/02/SVG_logo.sv

  • 目前,我正在使用MongoCollection 前: 但我不知道FindIterable是加载所有文档并循环,还是只是加载光标并在稍后循环时获取文档?