glide使用

glide在github地址:https://github.com/bumptech/glide

1.添加依赖(最好看官网,因为有时候添加依赖的会有轻微改动,版本也会一直更新)

repositories {
  mavenCentral()
  google()
}

dependencies {
  implementation 'com.github.bumptech.glide:glide:4.7.0'
  annotationProcessor 'com.github.bumptech.glide:compiler:4.7.0'
}

2.简单使用

  String url = "http://cn.bing.com/az/hprichbg/rb/Dongdaemun_ZH-CN10736487148_1920x1080.jpg";
        Glide.with(this).load(url).into(imageView);

调用Glide.with()方法用于创建一个加载图片的实例。with()方法可以接收Context、Activity或者Fragment类型的参数。也就是说我们选择的范围非常广,不管是在Activity还是Fragment中调用with()方法,都可以直接传this。那如果调用的地方既不在Activity中也不在Fragment中呢?也没关系,我们可以获取当前应用程序的ApplicationContext,传入到with()方法当中。注意with()方法中传入的实例会决定Glide加载图片的生命周期,如果传入的是Activity或者Fragment的实例,那么当这个Activity或Fragment被销毁的时候,图片加载也会停止。如果传入的是ApplicationContext,那么只有当应用程序被杀掉的时候,图片加载才会停止。

接下来看一下load()方法,以下是加载不同类型的资源时的代码示例

// 加载本地图片
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);

占位图

占位图是用来在未加载完成时预先展示的图片,另外还给出了加载错误时展示其他图片,以及如何禁止使用缓存等

Glide.with(this)
.load(url)
.placeholder(R.drawable.loading) //占位图
.error(R.drawable.error) //加载错误时显示的图片
.diskCacheStrategy(DiskCacheStrategy.NONE) //禁止使用缓存
.into(imageView);

指定图片格式(静态图片还是动态图片GIF)

glide可以自动识别要加载的资源时静态还是动态图片,但是也可以硬性指定,而且动态可以指定成静态,静态指定成动态就会报错。

Glide.with(this)
     .load(url)
     .asGif()   //动态   //.asBitmap()静态
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .into(imageView);

glide自动判断imageview大小,避免内存浪费,同时还可以指定图片的大小

使用Glide,我们就完全不用担心图片内存浪费,甚至是内存溢出的问题。因为Glide从来都不会直接将图片的完整尺寸全部加载到内存中,而是用多少加载多少。Glide会自动判断ImageView的大小,然后只将这么大的图片像素加载到内存当中,帮助我们节省内存开支。

Glide.with(this)
     .load(url)
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .override(100, 100)//指定图片的大小,不管你控件多大,图片就是这么大
     .into(imageView);
原文地址:https://www.cnblogs.com/laoyimou/p/8818914.html