java – Glide有加载PNG和SVG的方法吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Glide有加载PNG和SVG的方法吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1962字,纯文字阅读大概需要3分钟。
内容图文
我正在使用Glide将一些图像异步加载到我的一些ImageView中,我知道它可以处理像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 for SVG.Sample Example的样本
Setup 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>());
Use RequestBuilder with 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);
这样您就可以实现目标.我希望这是有帮助的.
内容总结
以上是互联网集市为您收集整理的java – Glide有加载PNG和SVG的方法吗?全部内容,希望文章能够帮你解决java – Glide有加载PNG和SVG的方法吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。