Glide3.7升级到4.X

        如今作android应用开发图片加载这一块基本上都是用的Glide,3.7升级到4.x的过程当中,依赖导入方式没有发生变化,只须要变动版本号就能够了,最大的区别在于使用Glide进行图片加载的时候参数设置方面。android

dependencies {
    compile 'com.github.bumptech.glide:glide:3.7.0'
}

变动后:git

dependencies {
    compile 'com.github.bumptech.glide:glide:4.8.0'
}

在使用过程当中,最大的变化就是4.x以后引入了RequestOptions 设置,而且把设置缓存机制 ,占位图等操做移到了RequestOptions里。。github

占位图

RequestOptions options = new RequestOptions()
                .placeholder(R.drawable.sishen);

        Glide.with(this)
                .load(url)
                .apply(options)
                .into(ivTest);

先建立了一个RequestOptions对象,而后调用它的placeholder()方法来指定占位图,再将占位图片的资源id传入到这个方法中。最后,在Glide加载以前调用apply()方法传入RequestOptions。缓存

错误占位图

RequestOptions options = new RequestOptions()
                .placeholder(R.drawable.sishen)
                .error(R.drawable.error) ;

        Glide.with(this)
                .load(url)
                .apply(options)
                .into(ivTest);

只要在构建RequestOptions设置error就能够。app

图片大小

Glide会自动根据ImageView的大小来决定图片的大小,若是有这样的需求必须指定一个图的大小能够经过RequestOptions指定。ide

RequestOptions options = new RequestOptions() 
        .override(200, 200);

使用override()方法指定了一个图片的尺寸,Glide只会将图片加载成200*100像素的尺寸。this

缓存机制

缓存分为内存缓存和硬盘缓存。url

Glide是自动开启内存缓存的。若是须要禁用。code

RequestOptions options = new RequestOptions() 
        .skipMemoryCache(true);

硬盘缓存有几个参数orm

  • DiskCacheStrategy.NONE: 表示不缓存任何内容。
  • DiskCacheStrategy.DATA: 表示只缓存原始图片。
  • DiskCacheStrategy.RESOURCE: 表示只缓存转换事后的图片。
  • DiskCacheStrategy.ALL : 表示既缓存原始图片,也缓存转换事后的图片。
  • DiskCacheStrategy.AUTOMATIC: 表示让Glide根据图片资源智能地选择使用哪种缓存策略(默认选项)。
RequestOptions options = new RequestOptions() 
        .diskCacheStrategy(DiskCacheStrategy.DiskCacheStrategy.AUTOMATIC);

加载格式

Glide会自动判断图片的格式,自动显示gif图。若是须要指定格式,经过如下方法

静态图:

Glide.with(this) 
     .asBitmap() 
     .load("http://guolin.tech/test.gif") 
     .into(imageView);
//若是你传入的仍是一张GIF图的话,Glide会展现这张GIF图的第一帧,而不会去播放它。

gif图:

Glide.with(this) 
     .asGif() 
     .load("http://guolin.tech/test.gif") 
     .into(imageView);

图片交换

Glide加载图片能够进行一些变换的操做。好比圆角,模糊等。

添加图片变换的用法很是简单,咱们只须要在RequestOptions中串接transforms()方法,并将想要执行的图片变换操做做为参数传入transforms()方法便可;

RequestOptions options = new RequestOptions() 
        .transforms(...); 
Glide.with(this) 
     .load(url) 
     .apply(options) 
     .into(imageView);

具体要进行什么样的图片变换操做,须要咱们本身来写的。不过Glide已经内置了几种图片变换操做,咱们能够直接拿来使用,好比CenterCrop、FitCenter、CircleCrop等。全部的内置图片变换操做其实都不须要使用transform()方法,Glide为了方便咱们使用直接提供了现成的API:

RequestOptions options = new RequestOptions() 
        .centerCrop(); 

RequestOptions options = new RequestOptions() 
        .fitCenter(); 

//圆形化裁剪
RequestOptions options = new RequestOptions() 
        .circleCrop();