前言

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的使用相关推荐

  1. Android图片加载框架——Glide(Glide v4)

    原文地址 Android图片加载框架--Glide(Glide v4) 前言 android中图片加载框架有很多,所有框架最终达到的目都是在Android平台上以极度简单的方式加载和展示图片,如果我们 ...

  2. Android图片加载框架 Glide 4 的用法

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/78582548 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...

  3. 初探Google推荐Android图片加载框架Glide

    简介 运行Demo 安装依赖包 现在编译好的依赖 Gradle Maven Proguard 简单使用 设置暂未图和加载失败图 加载封面图 从其他路径加载图片 加载图片到其他控件 调试信息 开启请求响 ...

  4. Android图片加载框架Glide

    在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech.这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官 ...

  5. 介绍一下google推荐的Android图片加载框架——Glide

    [译文原文]:Introduction to Glide, Image Loader Library for Android, recommended by Google 在泰国举行的Google开发 ...

  6. Android图片加载框架最全解析(八),带你全面了解Glide 4的用法

    本文转载自郭神的Glide分析系列:http://blog.csdn.net/guolin_blog/article/details/78582548 本文同步发表于我的微信公众号,扫一扫文章底部的二 ...

  7. Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/53939176 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...

  8. Android图片加载框架最全解析(七),实现带进度的Glide图片加载功能

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/78357251 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...

  9. Android图片加载框架最全解析(三),深入探究Glide的缓存机制

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/54895665 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...

最新文章

  1. oracle sql 平均分配 分组_SQL学习二
  2. docker 数据卷 mysql_Docker容器数据卷原理及使用方法解析
  3. python用raise手动抛出异常
  4. windows 2008 R2系统安装拨号v p n详细配置
  5. 5乘7的c语言程序,C语言程序设计实验5-7教案(20页)-原创力文档
  6. 何小鹏谈“小米造车”:我们要为勇敢者鼓掌
  7. 三星Galaxy S20 5G版跑分曝光 骁龙865配12GB内存
  8. linux备份没有vmlinuz,解决file /isolinux/vmlinuz0 not found
  9. 安徽大学线性代数习题册(第三章详细解答)
  10. QQ消息 pc端防撤回
  11. 74cms搭建 2021.03.13
  12. 管中窥豹IIoT(一):工业物联网价值与解决方案通用模型
  13. Day215.课程详细页面功能完善、Echarts统计分析模块[生成统计数据+生成图表]前后端整合 -谷粒学院
  14. 读 Frank Thilly 之《西方哲学史:修补增订版》
  15. 织梦DEDECMS QQ一键登录插件返回空白解决方法
  16. 如何用wireshark来解析出PDCP-LTE格式,即把PDCP报文突出到wireshark
  17. 基于字典的中文分词算法RMM
  18. P1-2017级第一次算法上机 F SkyLee的艾露猫
  19. 示波器探头如何连接设备?
  20. 如何将极客时间课程制作成kindle电子书

热门文章

  1. Windows服务器搭建Node-Media-Server视频服务器
  2. 机器学习,数据挖掘在研究生阶段大概要学些什么?
  3. Python进行网页自动打卡系统
  4. 雷达的主要技术指标、应用与分类和雷达对抗
  5. Centos7 查看系统版本信息
  6. vba中MsgBox的参数及用法
  7. Java选择题(八)
  8. [论文阅读笔记69]医学术语标准化-CODER
  9. HDU - 1284 钱币兑换问题 (找规律/完全背包)
  10. 如何在SQL中实现排序间接