Grild
Glide加载图片
//加载默认图片Glide.with(this).load(path).into(img);
//设置加载尺寸
Glide.with(this).load(path).override(200, 200).into(imageview);
//设置加载中以及加载失败图片
Glide.with(this).load(path).placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).into(imageview);
//设置动画
Glide.with(this).load(path).animate(R.anim.myanim).into(imageview);
// 设置压缩比例(1/10)
Glide.with(this).load(path).thumbnail(0.5f).into(imageview);
// 静态图片
Glide.with(this).load(path).asBitmap().into(imageview);
// gif动态图片
Glide.with(this).load(path).asGif().into(imageview);
// 缓存参数说明// DiskCacheStrategy.NONE:不缓存任何图片,即禁用磁盘缓存
// DiskCacheStrategy.ALL :缓存原始图片 和 转换后的图片(默认)
// DiskCacheStrategy.SOURCE:只缓存原始图片(原来的全分辨率的图像,即不缓变形后的图片)
// DiskCacheStrategy.RESULT:只缓存转换后的图片(即最终的图像:降低分辨率后 / 或者转换后 ,不缓存原始图片
Glide.with(this).load(path).diskCacheStrategy(DiskCacheStrategy.ALL).into(imageview);
// 设置跳过内存缓存
// 这意味着 Glide 将不会把这张图片放到内存缓存中去
// 但是仍然会利用磁盘缓存来避免重复的网络请求。
Glide.with(this).load(path).skipMemoryCache(true).into(imageview);
此外Grild还可以加载圆型图片在这里我就不详细说明了想了解的可以访问
https://www.cnblogs.com/androidsuperman/p/4886991.html
Picasso
picasso需要导入的依赖
implementation'com.squareup.picasso:picasso:2.3.2'0
现在我们来看看Picasso和Glide的区别
Gilede
Glide可以根据Imageview的大小自己决定图片大小
多样化媒体加载
Glide 不仅是一个图片缓存,它支持 Gif、WebP、缩略图。甚至是 Video
生命周期集成
通过设置绑定生命周期,我们可以更加高效的使用Glide提供的方式进行绑定,这样可以更好的让加载图片的请求的生命周期动态管理起来
高效的缓存策略
A. 支持Memory和Disk图片缓存
B. Picasso 只会缓存原始尺寸的图片,而 Glide 缓存的是多种规格,也就意味着 Glide 会根据你 ImageView 的大小来缓存相应大小的图片尺寸
C. 内存开销小默认的 Bitmap 格式是 RGB_565 格式,而 Picasso 默认的是 ARGB_8888 格式,这个内存开销要小一半。
使用方法复杂由于Glide其功能强大,所以使用的方法非常多,其源码也相对的复杂 包较大
相比其他图片加载库(Picasso & Fresco)对比PicassoGlide 是在Picasso 基础之上进行的二次开发做了不少改进,不过这也导致包比 Picasso 大不少,不过也就不到 500k(Picasso 是100多k),用法较为复杂,不过毕竟级别还是蛮小的,影响不是很大对比Fresco使用较Fresco简单,但性能(加载速度 & 缓存)却比不上Fresco
Picasso
ImageView targetImageView = (ImageView) findViewById(R.id.ImageView);
String Url = "http://218.192.170.132/1.jpg";
//Picasso使用了流式接口的调用方式
//Picasso类是核心实现类。
//实现图片加载功能至少需要三个参数: Picasso
//with(Context context)
//Context对于很多Android API的调用都是必须的,这里就不多说了 .with(context)
//load(String imageUrl):被加载图像的Url地址。
//大多情况下,一个字符串代表一个网络图片的URL。 .load(Url)
//into(ImageView targetImageView):图片最终要展示的地方。
.into(targetImageView);
2.2.2 图片转换使用最少的内存完成复杂的图片转换,转换图片以适合所显示的ImageView,来减少内存消耗Picasso.with(context) .load(url)
//裁剪图片尺寸 .resize(50, 50)
//设置图片圆角 .centerCrop() .into(imageView)2.2.3 加载过重 & 错误处理Picasso支持加载过程中和加载错误时显示对应图片Picasso.with(context) .load(url)
//加载过程中的图片显示 .placeholder(R.drawable.user_placeholder)//加载失败中的图片显示
//如果重试3次(下载源代码可以根据需要修改)还是无法成功加载图片,则用错误占位符图片显示。
.error(R.drawable.user_placeholder_error)
.into(imageView);
2.2.4 在Adapter中的回收不在视野的ImageView和取消已经回收的ImageView下载进程@Override
public void getView(int position, View convertView, ViewGroup parent) {
SquaredImageView view = (SquaredImageView) convertView;
if (view == null) {
view = new SquaredImageView(context);
}
String url = getItem(position); Picasso.with(context).load(url).into(view);
}
2.2.5 从不同资源源加载支持多种数据源 网络、本地、资源、Assets 等
//加载资源文件Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);
//加载本地文件Picasso.with(context).load(new File("/images/oprah_bees.gif")).into(imageView2);
Picasso是Android中的一个图片加载开源库
缺点
功能较为简单-图片加载;
性能(加载速度等等)较其他图片加载库(Glide、Fresco)较差自身无实现“本地缓存”
2.2.7
支持优先级处理每次任务调度前会选择优先级高的任务,比如 App 页面中 Banner 的优先级高于 Icon 时就很适用。
2.2.8
支持飞行模式、并发线程数根据网络类型而变手机切换到飞行模式或网络类型变换时会自动调整线程池最大并发数,比如 wifi 最大并发为 4, 4g 为 3,3g 为 2
2.2.9
“无”本地缓存无”本地缓存,不是说没有本地缓存,而是 Picasso 自己没有实现,交给了 Square 的另外一个网络库 okhttp 去实现,这样的好处是可以通过请求 Response Header 中的 Cache-Control 及 Expired 控制图片的过期时间。