添加依赖项
app下的build.gradle
dependencies {
implementation 'com.github.bumptech.glide:glide:4.7.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
}
项目下的build.gradle里的allprojects里
repositories {
mavenCentral()
google()
}
或者直接下载jar包放到lib下bulidpath
https://pan.baidu.com/s/1i21b2wbNeBzu-l63eD4nzw
简单使用
Glide.with(this).load(url).into(imageView);
好多操作,比如placeholder、transform、centerCrop、signature等方法现在需要写在RequestOptions里
Glide
.with(this)
.load(url)
.apply(new RequestOptions().placeholder(R.drawable.headimg))
.into(imageView);
圆形裁切
Glide4有circleCrop圆形裁切的功能,可以在加载图片的时候直接裁成圆形
Glide
.with(this)
.load(url)
.apply(new RequestOptions().circleCrop().placeholder(R.drawable.headimg))
.into(imageView);
关于图片刷新
有时候我们链接到同一url下的图片,图片已经更改,而图片却不刷新的时候,我们需要用到signature签名,
System.currentTimeMillis()可以获取一个时间戳作为作为签名,当key不一样时,图片就会重新加载。
Glide
.with(this)
.load(url)
.apply(new RequestOptions().circleCrop().signature(new ObjectKey(System.currentTimeMillis()+"")))
.into(imageView);
为了防止每次加载图片都刷新
我们可以写两个方法来判断图片源是否更改了
//更改头像的时候,保存头像更新状态
public static void saveHeadChange(Context context) {
SharedPreferences sp = context.getSharedPreferences("user_head", 0);
SharedPreferences.Editor editor = sp.edit();
editor.putString("headKey", System.currentTimeMillis()+"");
editor.apply();
}
//获取头像更新状态
public static String getHeadChange(Context context) {
SharedPreferences sp = context.getSharedPreferences("user_head", 0);
return sp.getString("headKey", "666");
}
当源图片发生了更改,就保存头像更新状态
加载头像的时候,获取头像更新状态
这样图片只会在源图片发生更改时刷新,否则就加载缓存,节省流量、加快速度。
Glide
.with(this)
.load(url)
.apply(new RequestOptions().circleCrop()
.signature(new ObjectKey(UserUtil.getHeadChange(getActivity()))))//我放在一个UserUtil工具类里面
.into(imageView);