Glide的使用和分析

用法

  • 基本使用
Glide.with(this).load(url).into(imageView)

with()方法接收的参数可以是context,fragment或者activity,当在activity或者fragment中调用时可以直接传入this,如果既不在activity又不在fragment中,我们可以传入ApplicationContext,值得注意的是,传入this与ApplicationConext的生命周期是有区别的,this会在activity或者fragment销毁时停止加载图片,而ApplicationContex则只有当应用被杀掉的时候才会停止加载。

load()方法用于加载指定的图片资源,可以是网络图片url,本地图片file,应用资源,二进制流,Uri对象等。

// 加载本地图片
File file = new File(getExternalCacheDir() + "/image.jpg");
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);

into()方法比较简单,接收的参数就是指图片要加载到的控件。

  • 占位图
Glide.with(this)
     .load(url)
     .placeholder(R.drawable.loading)
     .into(imageView);

Glide有非常强大的缓存功能,加载完的图片会缓存下来,下次会直接到缓存中取,因而加载速度会很快,占位图会来不及显示。如果不想使用缓存可以这样写:

Glide.with(this)
     .load(url)
     .placeholder(R.drawable.loading)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .into(imageView);

异常占位图

Glide.with(this)
     .load(url)
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .into(imageView);
  • 指定加载图片格式
    Glide有一个强大的功能,可以加载Gif图片,这点是Picasso不具备的。
    Glide加载git图片并不需要额外的代码,Glide会自动判断图片的格式。
    如果想指定加载静态图片:
Glide.with(this)
     .load(url)
     .asBitmap()
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .into(imageView);

asBitmap()表示只允许加载静态图片。
类似的,如果想指定加载动态图片,使用asGif(),如果图片是静态图片,指定加载动态,会显示异常图片。

  • 指定图片大小
    Glide会自动判断ImageView的大小,用多少加载多少,帮我们节省内存,如果有需要指定大小的需求,Glide也提供了相应的方法:
Glide.with(this)
     .load(url)
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .override(100, 100)
     .into(imageView);

你可能感兴趣的:(Glide的使用和分析)