Glide图片框架使用详细介绍(一),手握5家大厂offer
.load(url)
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.into(imageView);
5、设置是否加载动图
asBitmap()只加载静止图片
.asGif()只加载动态图片
设置成asBitmap的时候你去加载gif图片,那么只会显示静态图片,
设置成.asGif的时候你去加载静态图片会显示错误图片,报错。
Glide.with(this)
.load(url)
.asBitmap()
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.into(imageView);
6、Glide 使用加载动画和禁止动画
glide默认有淡入淡出动画.crossFade()也不必加上。
Glide
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.placeholder(R.mipmap.ic_launcher)
.error(R.mipmap.future_studio_launcher)
.crossFade()
.into(imageViewFade);
但其中crossFade()方法还有另外重载方法 .crossFade(int duration),如果你想要去减慢(或加快)动画,随时可以传一个毫秒的时间给这个方法。动画默认的持续时间是 300毫秒。
当然你也可以选择不要这个动画。
加上.dontAnimate() 禁止动画
Glide
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.placeholder(R.mipmap.ic_launcher)
.error(R.mipmap.future_studio_launcher)
.dontAnimate()
.in
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享
to(imageViewFade);
7、设置图片大小;
Picasso是加载了全尺寸的图片到内存,然后让GPU来实时重绘大小。而Glide加载的大小和ImageView的大小是一致的,自动适配大小,因此更小。
但你也可以为glide图片设置大小:
.override(300, 200); //设置尺寸大小
8、图片请求的优先级
通常,你会遇到这样的使用场景:你的 App 将会需要在同一时间内加载多个图像。让我们假设你正在构建一个信息屏幕,这里有一张很大的英雄图片在顶部,还有两个小的,在底部还有一些不那么重要的图片。对于最好的用户体验来说,应用图片元素是显示要被加载和显示的,然后才是底部不紧急的 ImageView。Glide 可以用 Priority 枚举来支持你这样的行为,调用 .priority() 方法。
但在看这个方法调用的示例代码之前,让么我看看 priority 的枚举值,它首先作为 .priority() 方法的参数的。
了解 Priority (优先级)枚举
这个枚举给了四个不同的选项,下面是按照递增priority(优先级)的
Priority.LOW
Priority.NORMAL
Priority.HIGH
Priority.IMMEDIATE
开始例子前,你应该知道的是:优先级并不是完全严格遵守的。Glide 将会用他们作为一个准则,并尽可能的处理这些请求,但是它不能保证所有的图片都会按照所要求的顺序加载。
然而,如果你有的使用场景是确定一些图片是重要的,充分利用它!
使用实例:英雄元素和子图像
让我们开始回到开始时的例子吧。你正在实现一个信息详情页面,有一个英雄图片在顶部,和较小的图片在底部。对于最好的用户体验来说,英雄图片首先需要被加载。因此,我们用 Priority.HIGH 来处理它。理论上说,这应该够了,但是为了让这个实例增加点趣味,我们也将底层图像分配给低优先级,用 .priority(Priority.LOW) 调用:
private void loadImageWithHighPriority() {
Glide
.with( context )
.load( UsageExampleListViewAdapter.eatFoodyImages[0] )
.priority( Priority.HIGH )
.into( imageViewHero );
}
private void loadImagesWithLowPriority() {
Glide
.with( context )
.load( UsageExampleListViewAdapter.eatFoodyImages[1] )
.priority( Priority.LOW )
.into( imageViewLowPrioLeft );
Glide
.with( context )
.load( UsageExampleListViewAdapter.eatFoodyImages[2] )
.priority( Priority.LOW )
.into( imageViewLowPrioRight );
}
9、缩略图
在你要用缩略图去做优化之前,确保你理解和掌握了所有缓存的选项和请求优先级。如果你已经实现了这些,再来查看缩略图是否能帮助更好的提高你的
Android 应用。
缩略图不同于之前博客提到的占位符。占位符必须附带应用程序捆绑的资源才行。缩略图是动态占位符。它也可以从网络中加载。缩略图将会在实际请求
加载完或者处理完之后才显示。如果缩略图对于任何原因,在原始图像到达之后,它不会取代原始图像。它只会被抹除。
提示:另外一个流畅加载图片过程的真的很棒的方式是用色彩图像占位符的图像背景的主色彩作为图像。我们也为此写了一个指南。
简单的缩略图
Glide 为缩略图提供2个不同的方式。第一个是简单的选择,在原始图像被用过之后,这只需要一个较小的分辨率。这个方法在 ListView的组合和详细视
图中是非常有用的。如果你已经在 ListView 中显示了图像。这么说吧,在250x250 像素的中,图像将在详细视图中需要一个更大的分辨率图像。然而,
从用户的角度来看,他已经看到较小版本的图像,为什么在详情页中出现一个占位符显示了几秒,然后相同图像又再次一次显示(高分辨率的)?
在这种情况下,它有更好的意义去继续显示这张 250x250 像素版本的图像在详情视图上,并且后台去加载全分辨率的图像。Glide 的 .thumbnail() 方
法让这一切成为可能。 在这样的情况下,这个参数是一个 float 作为其大小的倍数。
Glide
.with( context )
.load( UsageExampleGifAndVideos.gifUrl )
.thumbnail( 0.1f )
.into( imageView2 );
例如, 你传了一个 0.1f 作为参数,Glide 将会显示原始图像的10%的大小。如果原始图像有 1000x1000 像素,那么缩略图将会有 100x100 像素。因为
这个图像将会明显比 ImageView 小很多,你需要确保它的 ScaleType 的设置是正确的。
请注意,将应用于演示请求的所有请求设置也应用于缩略图。比如,如果你使用了一个变换去做了一个图像灰度。这同样将发生在缩略图中。
进阶缩略图
然而用 float 参数来使用 .thumbnail() 是易于设置且非常有效,但它不总是有意义的。如果缩略图是要通过网络去加载相同的全分辨率的图像,则可
能不会很快。所以,Glide 提供了另一个选项去加载和显示缩略图。
第二个选择是传一个完全新的 Glide 请求作为参数。让我们来看看实例:
private void loadImageThumbnailRequest() {
// setup Glide request without the into() method
DrawableRequestBuilder thumbnailRequest = Glide
.with( context )
.load( eatFoodyImages[2] );
// pass the request as a a parameter to the thumbnail request
Glide
.with( context )
.load( UsageExampleGifAndVideos.gifUrl )
.thumbnail( thumbnailRequest )
.into( imageView3 );
}
10.常规异常日志记录
Glide 不能直接去访问 GenericRequest 类去设置日志,但万一一些请求出错了你是可以捕获异常的。比如,如果图片不可用,Glide 会(默默地)抛出
一个异常,并且显示一个 drawable ,如果你已经指定了 .error() 的话。如果你明确想要知道这个异常,创建一个监听并传 .listener() 方法到
Glide 的建造者中。
首先,创建一个监听作为一个字段对象去避免垃圾回收(注:之前说过不要用匿名内部类的形式):
private RequestListener
Glide图片框架使用详细介绍(一),手握5家大厂offer相关推荐
- Glide图片框架使用详细介绍(一)
一.背景介绍 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech.这个库被广泛的运用在google的开源项目中,包括2014年google I/O ...
- 手握5家大厂offer!Android权限处理,吐血整理
开头 最近发现一些读者,留言提到跳槽面试的事情.当中,有几个编程老兵,说他们从事Android 开发多年,薪资却还在原地打转,跳槽升职不是很顺利,十分困惑.这显然是遇到瓶颈期. 就目前大环境来看,今年 ...
- 1个人,100天业余时间,用Flutter开发完一个商业APP,手握5家大厂offer
这个一个淘电商APP,同类型的APP有花生日记.好省.折800等等,基本上一个常规电商APP该有的,这个项目都有了.目前,该项目的完成度为80%,剩余的20%因为没有后台项目支持,所以无法完成. 为啥 ...
- 图片服务 - thumbor详细介绍
图片服务 - thumbor详细介绍 什么是thumbor? Thumbor是一种智能成像服务.它支持按需裁剪,调整大小和翻转图像. 它具有非常智能的图像重要点检测功能,可以使用最先进的人脸和特征检测 ...
- 我凭什么拿到了阿里、腾讯、今日头条3家大厂offer?通用流行框架大全
前言 从毕业到现在面试也就那么几家公司,单前几次都比较顺利,在面到第三家时都给到了我offer!前面两次找工作,没考虑到以后需要什么,自己的对未来的规划是什么,只要有份工作,工资符合自己的要求就行!所 ...
- 手握N段大厂实习经历的人生有多爽?
去年到现在一直频占热搜的董明珠接班人孟羽童到底是什么来头?看了她的简历发现除了名校背景之后,更令人倾佩的是她的多段名企实习经历.优秀的人往往有相似之处,互联网大佬李彦宏.华为天才少年武敏颜在大学时期便 ...
- Android Glide图片框架的使用
介绍:Glide是Google推荐的一套快速高效的图片加载框架,功能强大且使用方便 基本使用 添加Glide依赖 //Glideimplementation 'com.github.bumptech. ...
- #转# Glide图片框架
零.前言 本文所使用的Glide版本为3.7.0 如果需要使用V4的最新版本请参考Glide V4使用指南 一.简介 Glide,一个被google所推荐的图片加载库,作者是bumptech.这个库被 ...
- Glide 图片框架
多级缓存支持(最小化存储开销和解码次数) 默认情况下,Glide 会在请求图片之前检查以下多级缓存 活动资源 - 是否有另一个 View 正在展示这张图片 内存缓存 - 是否最近被加载过并仍存在于内存 ...
- android glide图片框架,【Android 进阶】图片载入框架之Glide(示例代码)
简单介绍 在泰国举行的谷歌开发人员论坛上,谷歌为我们介绍了一个名叫 Glide 的图片载入库,作者是 bumptech.这个库被广泛的运用在 google 的开源项目中,包含 2014 年 googl ...
最新文章
- 探测服务器操作系统工具,探测服务器操作系统
- python——常用内置函数(enumerate、map、zip、eval)用法
- FLASH STUDY LOG
- 如何通过预加载器提升网页加载速度
- 如何设计java线程安全类_如何设计线程安全的Java程序
- 艾特某人代码实现_Vue@某人,At某人,仿新浪微博@某人,@user,艾特,艾特某人...
- [vue-cli]vue-cli3你有使用过吗?它和2.x版本有什么区别?
- Java加密与解密的艺术~Provider
- Flume实战采集文件内容存入HDFS
- 替换Oracle,从阿里巴巴到亚马逊-他们在逃离什么?
- linux一句话问答(网络无关篇+网络相关篇+程序开发篇+经典图书)
- 团队管理(3)---有效降低企业员工离职率
- mysql创建视图不允许子查询
- ug12无法连接服务器系统,NX许可证错误:无法连接至许可证服务器系统。SPLM_LICENSE_SERVER错误[-15]...
- python做数据挖掘_python 数据挖掘
- UIPATH Timeout reached
- matlab中geoshow函数的使用/属性设置
- 成交量、持仓量与价格运动的关系
- ToggleButton的学习与使用
- Windows上利用Python自动切换代理IP的终极方案!
热门文章
- 站长说说之SEO流量翻倍增长的秘密
- switch语句的ns图怎么画_ns结构流程图是什么?ns流程图怎么画?
- autocad ios 虚线_教大家AutoCAD2020怎么画虚线的方法
- 【前端安全】常见安全性问题及解决方案
- 基于SSM二手房租赁系统
- Android ANR:executing service com.xxx.yyy/cn.jpush.android.service.PushService
- iOS抓包工具Charles
- iOS多控制器-视图切换.
- HDU - 2586 - How far away ? (最短路)
- 详解 box-shadow