Day5:Glide框架
关于源码的几个网址:
- Glide里面的几个线程池:https://blog.csdn.net/f409031mn/article/details/88921557
- Glide缓存机制:
https://www.jianshu.com/p/7b1ff697b06f - bitmap是面试经常问的知识:推荐一个牛掰大神的博客带你全面深入理解Glide框架:https://blog.csdn.net/sinyu890807/column/info/15318
一.Bitmap三级缓存机制
1.依赖:implementation ‘com.github.bumptech.glide:glide:4.9.0’//glide依赖
2.内存—>SD卡—>网络
3.SD卡位置
二. 加载本地SD卡图片+网络图片+资源图片+视频+GIF动图
Glide .with(this).load(地址).into(imageView);
三.加载圆形头像
Glide.with(this)
.load("https://dss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=2858426577,4189650377&fm=26&gp=0.jpg")
.transform(new CircleCrop())
.into(m1);
四.加载圆角头像
Glide.with(this)
.load("https://dss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=2858426577,4189650377&fm=26&gp=0.jpg")
.transform(new CenterCrop(),new RoundedCorners(20))//居中裁剪+圆角
.into(m1);
五,设置占位符和加载失败图片
error:设置错误图片
placeholder:设置占位符图片
skipMemoryCache(true):关闭内存缓存
diskCacheStrategy(DiskCacheStrategy.NONE):关闭磁盘缓存
Glide.with(this)
.load("https://dss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=2858426577,4189650377&fm=26&gp=0.jpg")
.placeholder(R.drawable.ic_launcher_background)//占位符,还没有发起网络请求,一般是空白或公司的logo
.error(R.drawable.ic_launcher_background)//加载失败,发起网络请求,途中失败,一般是撕裂图片
.skipMemoryCache(true)//关闭内存缓存
.diskCacheStrategy(DiskCacheStrategy.NONE)//关闭磁盘缓存
.transform(new CenterCrop(),new RoundedCorners(20))//居中裁剪+圆角
.into(m1);
六,一键清理所有缓存
Glide.get(GlideActivity.this).clearMemory();//清除内存缓存
new Thread(new Runnable() {
@Override
public void run() {
Glide.get(GlideActivity.this).clearDiskCache();//清除SD卡缓存
}
}).start();
七,封装工具类
public class GlideUtils {
/***
* 加载普通图片 关闭缓存 不重要的图片
* @param context
* @param path
* @param imageView
*/
public static void displayImage(Context context, Object path, ImageView imageView){
Glide.with(context)
.load(path)
.placeholder(R.drawable.ic_launcher_background)//还没有发起网络请求,一般空白或者公司logo
.error(R.drawable.ic_launcher_background)//发起请求失败,一般撕裂
.diskCacheStrategy(DiskCacheStrategy.NONE)//关闭磁盘
.skipMemoryCache(true)//关闭内存
.transform(new CenterCrop())//居中裁剪
.into(imageView);
}
/***
* 加载圆形图片 关闭缓存 不重要的图片
* @param context
* @param path
* @param imageView
*/
public static void displayCircleImage(Context context, Object path, ImageView imageView){
Glide.with(context)
.load(path)
.placeholder(R.drawable.ic_launcher_background)//还没有发起网络请求,一般空白或者公司logo
.error(R.drawable.ic_launcher_background)//发起请求失败,一般撕裂
.diskCacheStrategy(DiskCacheStrategy.NONE)//关闭磁盘
.skipMemoryCache(true)//关闭内存
.transform(new CircleCrop())//圆形裁剪
.into(imageView);
}
/***
* 加载圆角图片 关闭缓存 不重要的图片
* @param context
* @param path
* @param imageView
*/
public static void displayRoudedImage(Context context, Object path, ImageView imageView,int raduis){
Glide.with(context)
.load(path)
.placeholder(R.drawable.ic_launcher_background)//还没有发起网络请求,一般空白或者公司logo
.error(R.drawable.ic_launcher_background)//发起请求失败,一般撕裂
.diskCacheStrategy(DiskCacheStrategy.NONE)//关闭磁盘
.skipMemoryCache(true)//关闭内存
.transform(new CenterCrop(),new RoundedCorners(raduis))//圆角裁剪
.into(imageView);
}
}
练习手册:
技能一:
1.使用Glide加载视频
2.使用Glide加载GIF动图
3.使用Glide加载网络图片
4.使用Glide加载本地图片
5.使用Glide加载圆形头像
6.使用Glide加载圆角头像
7.使用Glide设置占位符
8.使用Glide设置加载错误图片
9.清除Glide的缓存
技能二:
使用OKHttp网络请求json数据,将请求到数据展现在listview中
1.OKHttp要进行封装,采用单例模式
2.OKhttp设置log拦截器和Token拦截器
3.使用OKHttp post请求数据,将请求到的数据展现在list view中
4.Id为偶数的图片使用Glide加载成圆形头像
5.Id为奇数的图片使用Glide加载圆角头像
6.每张图片设置占位符和错误加载图片
7.设置一个按钮能够实现清除Glide涉及到的缓存