前言:
谈到图片加载框架,必然会想到picasso,glide,甚至是比较经典的已经不再维护的Image-Loader.Glide 作为google推荐的图片加载框架,值得一探究竟。
基本使用:
Glide.with(context).url(url).into(imageview);
这样我们就能加载一张网络图片了,是不是很简单.
记得加入网络权限.glide的强大之处远远不止于此,
中级用法:
-
设置占位图:
当我们加载图片时如果想给imageview设置一张默认的图片只需:
Glide.with(this).load(url).placeholder(R.drawble.place).into(imageview);
-
设置错误图片:
当网络错误或者某些原因导致图片加载失败时设置错误图片我们只需:
Glide.with(this).load(url)..centerCrop().placeholder(R.drawble.place).error(R.drawble.load.error).into(imageview);
-
加载本地图片:
加载本地图片只需传入file即可:
Glide.with(context).load(file).into(imageview);
-
加载gif图片;
glide支持加载gif图片,和加载普通一样只需传入url即可:
Glide.with(this).load(GifUrl).into(imageview);
glide还支持加载本地图片的第一帧,这样我们用作视频的缩略图,也和加载本地图片一样传入file即可:
Glide.with(context).load(VideoFile).into(imageview);
终极用法:
-
图片预处理:
党我们的图片有特殊需求的时候(如圆形头像,高斯模糊等)glide也提供了方法来处理:
通过继承BitmapTransformation来对图片进行预处理;
public class BitmapTransform extends BitmapTransformation {
@Override
protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
//toTransform就是可以预处理的bitmap
}
@Override
public String getId() {
}
}
如果对图片处理不熟悉,可以参考glide-transformations,该库有比较常见的的图片处理类,如高斯模糊,圆形,圆角图片等.
-
自定义Glide:
我们一般情况下使用glide的时候都比较简单glide已经默认帮我们配置好了图片质量,图片缓存等,当我们需要自定义的时候可以通过实现GlideModule类来实现.
如:
public class MyGlideModule implements GlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
//可以通过GlideBuilder 来设置自定义属性,如:
builder.setDiskCache();//自定义磁盘缓存
builder.setMemoryCache();//自定义内存缓存
builder.setDecodeFormat();//自定义图片质量
//还有其他的可自行查看.
}
@Override
public void registerComponents(Context context, Glide glide) {
}
}
**注:自定义module需要在AndroidManifest中配置,在application节点下添加:
<meta-data android:name="com.xxx.MyGlideModule" android:value="GlideModule" />
这样就自定义module就完成了,
在清单文件中可以自定义多个GlideModule,
**