Picasso
Android 平台一款强大的开源图片下载缓存库。
项目地址:https://github.com/square/picasso
文档介绍:http://square.github.io/picasso/
特点:
(1)可以自动检测 adapter 的重用并取消之前的下载
(2)图片变换
(3)可以加载本地资源
(4)可以设置占位资源
(5)支持 debug 模式
介绍:
1、简单调用 就是一句话: 传递context ,图片url,要加载的View
Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);
很多常见Android图像加载缺陷都由毕Picasso自动处理:
1.在adapter中需要取消已经不在视野范围的ImageView图片资源的加载,否则会导致图片错位,Picasso已经解决了这个问题。
2.使用复杂的图片压缩转换来尽可能的减少内存消耗
3.自带内存和硬盘二级缓存功能
特性:
1、在Adapter中下载图片,自动重用缓存 和 取消下载。
@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、图片变化:对图片进行处理,可以更好的适应布局,节省内存开销
Picasso.with(context).load(url)
.resize(50, 50) //调整大小,节省内存
.centerCrop() //裁剪模式
.into(imageView)
当然我们也可以自定义需求,实现 Transformation
public class CropSquareTransformation implements Transformation {
@Override
public Bitmap transform(Bitmap source) {
int size = Math.min(source.getWidth(), source.getHeight());
int x = (source.getWidth() - size) / 2;
int y = (source.getHeight() - size) / 2;
Bitmap result = Bitmap.createBitmap(source, x, y, size, size);
if (result != source) {
source.recycle();
}
return result;
}
@Override public String key() {
return "square()";
}
}
CropSquareTransformation的对象传递给实例的 transform 方法即可。
3、加载占为图以及错误图片
Picasso.with(context)
.load(url)
.placeholder(R.drawable.user_placeholder) //占位用
.error(R.drawable.user_placeholder_error) //错误显示
.into(imageView);
4、资源加载
Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);
Picasso.with(context).load("file:///android_asset/DvpvklR.png").into(imageView2);
Picasso.with(context).load(new File(...)).into(imageView3);
Download
Gradle:
compile 'com.squareup.picasso:picasso:2.5.2'
如果想了解其原理和更多用法,请参看: