如今作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
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();