Glide是一个优秀的图片加载工具库.它可以支持多种图片数据源.在对图片加载并显示时,能较好的处理好缓存,保持较低的内存占用.目前已经被Google用于其官方应用中.

为什么要使用Glide?

Android在使用图片的时候是相当麻烦的,因为需要一个像素一个像素地加载这些图片到内存。一个中端手机所拍摄的一张照片有2592×1936(5百万)像素,这会占用大概19M内存。如果你再加上各种好坏不一的网络下的图片请求,同时要处理缓存、图片加载等问题,焦头烂额。如果你这时候使用了一个像Glide一样经过不断优化和严格测试的图片处理库,你会庆幸你节省了大量的时间,同时也避免了很多头疼的问题。

添加Glide到AndroidStudio项目中

  • 第一种方法:和大多数依赖库一样,在Gradle项目中只需要在build.gradle中添加一行:(可直接copy)
compile 'com.github.bumptech.glide:glide:3.7.0'
  • 第二种方法:自己动手,丰衣足食
    找到如图:

搜索glide.得到的结果和第一种方式一样.

常见设置

  • placeholder() 占位图片
  • error() 加载失败
  • crossFade()淡入淡出
  • dontAnimate()无动画效果
  • override()调整图片大小
  • transform()自定义图形转换
  • skipMemoryCache(true)不做内存缓存
  • diskCacheStrategy(DiskCacheStrategy.ALL)磁盘缓存
  • DiskCacheStrategy.ALL 缓存所有版本的图片
  • DiskCacheStrategy.NONE 不缓存任何图片
  • DiskCacheStrategy.SOURCE 只缓存全分辨率的图像
  • DiskCacheStrategy.RESULT 只缓存经过处理的图片

第一次尝试:从一个 URL加载图片

用Glide完成一个完整的图片加载功能请求,需要向其构造器中至少传入3个参数,分别是:

  1. with(Context context) :Context是许多Android API需要调用的, Glide也不例外。这里Glide非常方便,你可以任意传递一个Activity或者Fragment对象,它都可以自动提取出上下文。
  2. load(String imageUrl) :这里传入的是你要加载的图片的URL,大多数情况下这个String类型的变量会链接到一个网络图片。
  3. into(ImageView targetImageView) :将你所希望解析的图片传递给所要显示的ImageView。

举个栗子(不可以吃哦):

ImageView targetImageView= (ImageView) findViewById(R.id.img);
String internetUrl = "https://www.baidu.com/img/bd_logo1.png";

Glide.
    with(this).
    load(internetUrl).
    into(targetImageView);

注:犯了一个低级错误,访问网络没添加权限,图片半天加载不出来..害得我纠结了好久.原谅我还是个菜鸟妹纸.

<!-- 访问网络的权限 -->
<uses-permission android:name="android.permission.INTERNET"/>

如果上面这个URL链接的图片的确存在,并且你的ImageView可见,你将会在1~2秒见到这张图片被加载。
假如上面这张图片不存在,Glide会回调相应的出错接口(这个以后再具体介绍)。
你可能已经被这个3行代码说服,觉得这个Glide的确对你有用。不过,现在你所见到的,只是Glide全部特性里的冰山一角而已。