上一博客,使用v4包的缓存机制来实现图片缓存,并在listview中实现异步加载图片,但我回顾了一下,感觉十分繁琐,想着有没有现成的jar包,或者类库什么的可以帮助我直接实现这个功能,然后Glide出现了,一句话就搞定。。大大提高了开发效率。
首先去下载Glide的jar包,
下载地址:https://github.com/bumptech/glide/releases/tag/v3.7.0
android studio用户添加引用:compile ‘com.github.bumptech.glide:glide:3.7.0’
然后将jar包添加到程序内,就可以直接使用了。
下面就是Glide的简单使用方法:
1 设置绑定生命周期
Glide.with(Context context);// 绑定Context
Glide.with(Activity activity);// 绑定Activity
Glide.with(FragmentActivity activity);// 绑定FragmentActivity
Glide.with(Fragment fragment);// 绑定Fragment
2 简单的加载图片实例
Glide.with(this).load(imageUrl).into(imageView);
3 设置加载中以及加载失败图片
Glide.with(this).load(imageUrl).placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).into(imageView);
4 设置跳过内存缓存
Glide.with(this).load(imageUrl).skipMemoryCache(true).into(imageView);
5 设置下载优先级
Glide.with(this).load(imageUrl).priority(Priority.NORMAL).into(imageView);
6 设置缓存策略
Glide.with(this).load(imageUrl).diskCacheStrategy(DiskCacheStrategy.ALL).into(imageView);
策略解说:
all:缓存源资源和转换后的资源
none:不作任何磁盘缓存
source:缓存源资源
result:缓存转换后的资源
7 设置加载动画
Glide.with(this).load(imageUrl).animate(R.anim.item_alpha_in).into(imageView);
8 设置缩略图支持
这样会先加载略缩图后加载图片
Glide.with(this).load(imageUrl).thumbnail(0.1f).into(imageView);
9 设置加载尺寸
Glide.with(this).load(imageUrl).override(800, 800).into(imageView);
10 设置动态转换
Glide.with(this).load(imageUrl).centerCrop().into(imageView);
11 设置动态GIF加载方式
Glide.with(this).load(imageUrl).asBitmap().into(imageView);//显示gif静态图片
Glide.with(this).load(imageUrl).asGif().into(imageView);//显示gif动态图片
12 缓存的动态清理
Glide.get(this).clearDiskCache();//清理磁盘缓存 需要在子线程中执行
Glide.get(this).clearMemory();//清理内存缓存 可以在UI主线程中进行
13 设置监听请求接口
Glide.with(this).load(imageUrl).listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
//imageView.setImageDrawable(resource);
return false;
}
}).into(imageView);