一、Glide 3.x 加载图片
1. 配置
在app/build.gradle文件当中添加如下依赖:
dependencies {
compile 'com.github.bumptech.glide:glide:3.8.0'
}
2. 加载图片
// 加载图片
Glide.with(MapKitHomeActivity.this).load(imagePath).into(ivShowImg);
// 使用Target来加载显示图片
Glide.with(mContext).load(url).asBitmap().into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
ivBanner.setImageBitmap(resource);
}
});
// 加载圆形图片
Glide.with(context).load(url)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.skipMemoryCache(false)
.error(R.drawable.icon_load_photo)
.placeholder(R.drawable.icon_load_photo) //加载成功前显示的图片
.fallback(R.drawable.icon_load_photo) //url为空的时候,显示的图片
.transform(new CircleCrop(context)).into(info);
CircleCrop.java
public class CircleCrop extends BitmapTransformation {
public CircleCrop(Context context) {
super(context);
}
public CircleCrop(BitmapPool bitmapPool) {
super(bitmapPool);
}
@Override
public String getId() {
return "com.example.glidetest.CircleCrop";
}
@Override
protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
int diameter = Math.min(toTransform.getWidth(), toTransform.getHeight());
final Bitmap toReuse = pool.get(outWidth, outHeight, Bitmap.Config.ARGB_8888);
final Bitmap result;
if (toReuse != null) {
result = toReuse;
} else {
result = Bitmap.createBitmap(diameter, diameter, Bitmap.Config.ARGB_8888);
}
int dx = (toTransform.getWidth() - diameter) / 2;
int dy = (toTransform.getHeight() - diameter) / 2;
Canvas canvas = new Canvas(result);
Paint paint = new Paint();
BitmapShader shader = new BitmapShader(toTransform, BitmapShader.TileMode.CLAMP,
BitmapShader.TileMode.CLAMP);
if (dx != 0 || dy != 0) {
Matrix matrix = new Matrix();
matrix.setTranslate(-dx, -dy);
shader.setLocalMatrix(matrix);
}
paint.setShader(shader);
paint.setAntiAlias(true);
float radius = diameter / 2f;
canvas.drawCircle(radius, radius, radius, paint);
if (toReuse != null && !pool.put(toReuse)) {
toReuse.recycle();
}
return result;
}
}
二、Glide 4.x 加载图片
1. 配置
在app/build.gradle文件当中添加如下依赖:
dependencies {
compile 'com.github.bumptech.glide:glide:4.2.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.2.0'
}
2. 使用GlideApp加载图片
1. 新建一个我们自己的模块类MyAppGlideModule
@GlideModule
public class MyAppGlideMoudle extends AppGlideModule {
}
2. 在Android Studio中点击菜单栏Build -> Rebuild Project
神奇的事情发生了,MyAppGlideModule类所在的包名下生成了GlideApp,可以使用这样的语句来加载图片:
// 加载图片
GlideApp.with(MapKitHomeActivity.this).load(imagePath).into(ivShowImg);
// 使用Target来加载显示图片
GlideApp.with(mContext).asBitmap().load(url).into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
ivBanner.setImageBitmap(resource);
}
});
// 加载圆形图片
RequestOptions requestOptions = RequestOptions.circleCropTransform();
GlideApp.with(context).load(url)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.skipMemoryCache(false)
.error(R.drawable.icon_load_photo)
.placeholder(R.drawable.icon_load_photo) //加载成功前显示的图片
.fallback(R.drawable.icon_load_photo) //url为空的时候,显示的图片
.apply(requestOptions).into(info);
三、Glide 加载图片添加 cookie
GlideUrl url = new GlideUrl(uri, new LazyHeaders.Builder().addHeader("Cookie", "cookie=" + tokenId).build());