Glide基本使用

Glide3

添加依赖:

 compile 'com.github.bumptech.glide:glide:3.7.0'

基本使用:

//其中this可以是Application,Activity或Fragment,
//this是什么决定了Glide的生命周期,this销毁Glide也会停止加载图片
Glide.with(this).load(url).into(imageView);

Glide还可以以各种形式load图片:

// 加载本地图片
File file = new File("xxx");
Glide.with(this).load(file).into(imageView);

// 加载应用资源
int resource = R.drawable.image;
Glide.with(this).load(resource).into(imageView);

// 加载二进制流
byte[] image = getImageBytes();
Glide.with(this).load(image).into(imageView);

// 加载Uri对象
Uri imageUri = getImageUri();
Glide.with(this).load(imageUri).into(imageView);

占位图和错误图

Glide.with(this)
     .load(url)
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .into(imageView);

缓存

Glide.with(this)
     .load(url)
     .skipMemoryCache(true)						//不使用内存缓存
     .diskCacheStrategy(DiskCacheStrategy.NONE)	//不使用硬盘缓存
     .into(imageView);

其中硬盘缓存策略有4种:
DiskCacheStrategy.NONE:不使用硬盘缓存
DiskCacheStrategy.SOURCE:只用硬盘缓存原始图片
DiskCacheStrategy.RESULT:表示只缓存转换过后的图片(默认选项)
DiskCacheStrategy.ALL:用硬盘缓存原始图片和转换过后的图片
指定图片格式:

Glide.with(this)
     .load(url)
     .asBitmap()				//加载静态图,对于Gif只加载第一帧
   //.asGif()					//加载动态图,对于静态图抛异常
     .into(imageView);

指定图片大小

Glide.with(this)
     .load(url)
     .override(100, 100)
     .into(imageView);

回调监听:

返回Drawable对象:

Glide.with(this).load(url).into(new SimpleTarget<GlideDrawable>() {
      @Override
      public void onResourceReady(GlideDrawable res, GlideAnimation<? super GlideDrawable> animation) {

      }
});

返回Bitmap对象:

Glide.with(getApplication()).load(url).asBitmap().into(new SimpleTarget<Bitmap>() {
       @Override
       public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                
       }
});

预加载:

preload()方法默认是预加载的原始图片大小,所以要将diskCacheStrategy的缓存策略指定成DiskCacheStrategy.SOURCE,否则容易出现预加载完成之后还是要从网络上去请求图片这种现象。

Glide.with(this)
     .load(url)
     .diskCacheStrategy(DiskCacheStrategy.SOURCE)
     .preload();

使用图片时也需要将硬盘缓存策略指定成DiskCacheStrategy.SOURCE,以保证Glide会去读取刚才预加载的图片缓存。

Glide.with(this)
     .load(url)
     .diskCacheStrategy(DiskCacheStrategy.SOURCE)
   	 .into(imageView);

preload的原理是使用了一个PreloadTarget,而在onResourceReady方法中只有空实现

Listener()

   Glide.with(this)
        .load(url)
        .listener(new RequestListener<String, GlideDrawable>() {
                @Override
                public boolean onException(Exception e, String model, Target<GlideDrawable> target,
                    boolean isFirstResource) {
                    return false;
                }

                @Override
                public boolean onResourceReady(GlideDrawable resource, String model,
                    Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                    return false;
                }
          })
          .into(imageView);

Glide4

	 implementation 'com.github.bumptech.glide:glide:4.4.0'
     annotationProcessor 'com.github.bumptech.glide:compiler:4.4.0'

新增了RequestOptions 类,Glide4将部分API功能封装在RequestOptions 中,在通过apply方法,传递给Glide使用

	 RequestOptions options = new RequestOptions();
     options.placeholder(R.drawable.ic_launcher_background);
     		.diskCacheStrategy(DiskCacheStrategy.NONE)
            .skipMemoryCache(false)
            .override(Target.SIZE_ORIGINAL)
            .override(200200)
     Glide.with(this.getApplicationContext())
                        .load(url)
                        .apply(options)
                        .into(mImage);

你可能感兴趣的:(Glide基本使用)