Android网络加载框架Glide的使用
前言
Glide是Google推荐的用于Android平台的图片加载框架,Glide和Picasso有90%的相似度,可以说Glide是Picasso的克隆版本,只是在细节上存在不少区别。还不是很了解Gilde的同学,可以先看看下面这两篇文章:
- glide的介绍
- glide的使用
Glide有以下特点。
GIF 动画的解码
本地视频剧照的解码
缩略图的支持
Activity 生命周期的集成: 当Activity暂停和重启时,Glide能够做到智能的暂停和重新开始请求,并且当Android设备的连接状态变化时,所有失败的请求能够自动重新请求
转码的支持: Glide的toBytes() 和transcode() 两个方法可以用来获取、解码和变换背景图片,并且transcode() 方法还能够改变图片的样式
动画的支持: 新增支持图片的淡入淡出动画效果(调用crossFade()方法)和查看动画的属性的功能
OkHttp 和Volley 的支持: 默认选择HttpUrlConnection作为网络协议栈,还可以选择OkHttp和Volley作为网络协议栈
其他功能: 如在图片加载过程中,使用Drawables对象作为占位符、图片请求的优化、图片的宽度和高度可重新设定、缩略图和原图的缓存等功能
glide的使用
- 引入Glide
dependencies {compile 'com.github.bumptech.glide:glide:3.7.0'compile 'com.android.support:support-v4:19.1.0'
}
- 加载图片
Glide.with(context).load(url).diskCacheStrategy(DiskCacheStrategy.ALL).into(imageView);
Glide的with方法不光接受Context,还接受Activity 和 Fragment,Context会自动的从他们获取。
gif图片加载无需任何处理即可,glide会自动判断图片是否是gif格式。
占位图
placeholder:还没加载出来时的占位图
error:加载失败时的占位图
fallback:url为null时的占位图
Glide.with(context).load(url).placeholder(R.mipmap.ic_launcher)//loading时的占位图.error(R.mipmap.ic_launcher)//加载失败的占位图.fallback( R.drawable.wuyanzu)//url为空时的占位图.diskCacheStrategy(DiskCacheStrategy.ALL).into(imageView);
- 动画
嗯,其实这个是默认的,但是你还是可以写出来,渐显动画
Glide.with(context)
.load().placeholder(R.mipmap.ic_launcher)
.error(R.mipmap.future_studio_launcher)
.crossFade()
.into(imageViewFade);
这里还有一个.fadeFade(int duration),设置动画时间。如果你不想要动画可以加上.dontAnimate()
Glide.with(context)
.load( null)//加载空指针的时候
.fallback( R.drawable.wuyanzu)//嗯,吴彦祖。
.into( imageViewNoFade );
- 调整图片大小resize(int ,int )
单位是像素,裁剪你的图片大小。其实Glide已经会自动根据你mageView裁剪照片来放在缓存中了。但是不想适应ImageView大小的时候,可以调用这个方法.override()。
Glide.with(context)
.load(image)
.override(600, 200)
.into(imageViewResize);
- 图片的缩放,centerCrop()和fitCenter()
使用centerCrop是利用图片图填充ImageView设置的大小,如果ImageView的Height是match_parent则图片就会被拉伸填充
Glide.with(context).load(imageUrl).centerCrop().into(imageView);
使用fitCenter即缩放图像让图像都测量出来等于或小于 ImageView 的边界范围,该图像将会完全显示,但可能不会填满整个ImageView。
Glide.with(context).load(imageUrl).fitCenter().into(imageView);
- 缩略图
缩略图有什么用就不说了,方正在一些条件下好处大大的,相当于一个动态的placeHolder。还有一种方法。
.thumbnail()方法的目的就是让用户先看到一个低解析度的图,点开后,再加载一个高解析度的图。
Glide.
with( context )
.load(image)
.thumbnail( 0.1f )//表示为原图的十分之一
.into( imageView2 );
- 显示本地视频
String filePath = "/storage/emulated/0/Pictures/example_video.mp4";
Glide.with( context ).load( Uri.fromFile( new File( filePath ) ) ).into(imageViewGifAsBitmap );
- 缓存策略
Glide.with( context ).load(imageUrl).skipMemoryCache(true).into(imageViewInternet );//跳过内存缓存Glide.with( context ).load(imageUrl).diskCacheStrategy(DiskCacheStrategy.NONE).into( imageViewInternet );//跳过硬盘缓存
DiskCacheStrategy.NONE 什么都不缓存
DiskCacheStrategy.SOURCE 仅仅只缓存原来的全分辨率的图像
DiskCacheStrategy.RESULT 仅仅缓存最终的图像,即降低分辨率后的(或者是转换后的)
DiskCacheStrategy.ALL 缓存所有版本的图像(默认行为)
- 请求优先级
加载图片肯定也是有先后顺序,Glide提供了priority()这个方法,它接收以下几个参数:
Priority.LOW
Priority.NORMAL
Priority.HIGH
Priority.IMMEDIATE
但是Glide并不一定会按照你的顺序来,只是尽量按照你的顺序来。(比如给一张很大的图片最高的优先权,但是它并不一定比低优先级的图先加载出来)
Glide.with(context).load(imageUrl).priority( Priority.HIGH).into( imageView);
一些使用技巧
- Glide.with(context).resumeRequests()和 Glide.with(context).pauseRequests()
当列表在滑动的时候,调用pauseRequests()取消请求,滑动停止时,调用resumeRequests()恢复请求。这样是不是会好些呢?
- Glide.clear()
当你想清除掉所有的图片加载请求时,这个方法可以帮助到你。
- ListPreloader
如果你想让列表预加载的话,不妨试一下ListPreloader这个类。
一些基于Glide的优秀库
- glide-transformations
一个基于Glide的transformation库,拥有裁剪(圆形,圆角),着色,模糊,滤镜等多种转换效果,赞的不行不行的~~
/**
* 圆角图片
*
* @param context
* @param imageView
* @param url
*/
public static void loadRoundCornerImage(Context context, final ImageView imageView, String url) {
Glide.with(context).load(url).placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).diskCacheStrategy(DiskCacheStrategy.ALL).bitmapTransform(new RoundedCornersTransformation(context, 100, 0)).into(imageView);}/*** 模糊加载图片** @param context* @param imageView* @param url*/
public static void loadBlurredImage(Context context, final ImageView imageView, String url) {Glide.with(context).load(url).placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).diskCacheStrategy(DiskCacheStrategy.ALL).bitmapTransform(new BlurTransformation(context)).into(imageView);}/*** 加载圆形图片* @param context* @param imageView* @param url*/
public static void loadCircleImage(Context context, final ImageView imageView, String url) {Glide.with(context).load(url).placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).diskCacheStrategy(DiskCacheStrategy.ALL).bitmapTransform(new CropCircleTransformation(context)).into(imageView);
}/**
各种滤镜效果:ToonFilterTransformationSepiaFilterTransformation,ContrastFilterTransformationInvertFilterTransformation,PixelationFilterTransformation,SketchFilterTransformationSwirlFilterTransformation,BrightnessFilterTransformation,KuwaharaFilterTransformationVignetteFilterTransformation*/public static void loadFilterEffectImage(Context context, final ImageView imageView, String url){Glide.with(context).load(url).placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).diskCacheStrategy(DiskCacheStrategy.ALL).bitmapTransform(new VignetteFilterTransformation(context)).into(imageView);
}
- GlidePalette
Palette 是让界面显示一致的利器,它的作用是取到一张图的色彩,然后返回一系列颜色,可供我们选择设置我们的文本颜色,背景颜色,从而达到界面的一致性。
具体参考:http://www.jianshu.com/p/ccf5230dbcca
Android网络加载框架Glide的使用相关推荐
- Android图片加载框架——Glide(Glide v4)
原文地址 Android图片加载框架--Glide(Glide v4) 前言 android中图片加载框架有很多,所有框架最终达到的目都是在Android平台上以极度简单的方式加载和展示图片,如果我们 ...
- Android图片加载框架 Glide 4 的用法
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/78582548 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...
- 初探Google推荐Android图片加载框架Glide
简介 运行Demo 安装依赖包 现在编译好的依赖 Gradle Maven Proguard 简单使用 设置暂未图和加载失败图 加载封面图 从其他路径加载图片 加载图片到其他控件 调试信息 开启请求响 ...
- Android图片加载框架Glide
在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech.这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官 ...
- 介绍一下google推荐的Android图片加载框架——Glide
[译文原文]:Introduction to Glide, Image Loader Library for Android, recommended by Google 在泰国举行的Google开发 ...
- Android图片加载框架最全解析(八),带你全面了解Glide 4的用法
本文转载自郭神的Glide分析系列:http://blog.csdn.net/guolin_blog/article/details/78582548 本文同步发表于我的微信公众号,扫一扫文章底部的二 ...
- Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/53939176 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...
- Android图片加载框架最全解析(七),实现带进度的Glide图片加载功能
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/78357251 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...
- Android图片加载框架最全解析(三),深入探究Glide的缓存机制
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/54895665 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...
最新文章
- oracle sql 平均分配 分组_SQL学习二
- docker 数据卷 mysql_Docker容器数据卷原理及使用方法解析
- python用raise手动抛出异常
- windows 2008 R2系统安装拨号v p n详细配置
- 5乘7的c语言程序,C语言程序设计实验5-7教案(20页)-原创力文档
- 何小鹏谈“小米造车”:我们要为勇敢者鼓掌
- 三星Galaxy S20 5G版跑分曝光 骁龙865配12GB内存
- linux备份没有vmlinuz,解决file /isolinux/vmlinuz0 not found
- 安徽大学线性代数习题册(第三章详细解答)
- QQ消息 pc端防撤回
- 74cms搭建 2021.03.13
- 管中窥豹IIoT(一):工业物联网价值与解决方案通用模型
- Day215.课程详细页面功能完善、Echarts统计分析模块[生成统计数据+生成图表]前后端整合 -谷粒学院
- 读 Frank Thilly 之《西方哲学史:修补增订版》
- 织梦DEDECMS QQ一键登录插件返回空白解决方法
- 如何用wireshark来解析出PDCP-LTE格式,即把PDCP报文突出到wireshark
- 基于字典的中文分词算法RMM
- P1-2017级第一次算法上机 F SkyLee的艾露猫
- 示波器探头如何连接设备?
- 如何将极客时间课程制作成kindle电子书