Picasso简介
Picasso 是Square公司出品的一个强大的图片下载和缓存图片库可以实现图片下载和缓存功能。
picasso使用简单 Picasso.with(context).load(url).into(imageView) ;
Picasso 下载
官方下载地 : http://square.github.io/picasso/
Javadoc地址: http://square.github.io/picasso/2.x/picasso/
StackOverflow地址:http://stackoverflow.com/questions/tagged/picasso?sort=active
Picasso 特性
- 在adapter中回收和取消当前的下载功能,自动取消不在视野范围内的ImageView视图资源的加载。
- 使用最少的内存完成复杂的图形转换操作,减少内存消耗。
- 自动的内存和硬盘缓存。
- 图形转换操作,如变换大小,旋转等,提供了接口来让用户可以自定义转换操作。
- 可以加载网络或本地资源。
支持调试
调用函数 Picasso.setDebug(true) 可以在加载的图片左上角显示一个三角形,不同的颜色代表不同的加载来源- 红色:代表从网络下载的图片
- 黄色:代表从磁盘缓存加载的图片
- 绿色:代表从内存中加载的图片
Picasso图片异步加载功能
- 创建对象: Picasso.with(Context context)
加载图片
load(Uri uri) //加载网络图片 load(String path) //加载指定路径图片 load(File file) //加载指定文件的图片 load(int resourceId) //加载res下资源文件图片
加载图片共有的一些配置方法
placeholder()加载未加载完成的图片 error() 加载发生错误时加载的图片 resize(int targetWidth, int targetHeight)调整图片到指定的大小(以像素为单位) centerCrop()充满指定大小的控件位置不变形 config(Bitmap.Config config)配置图片质量 transform(Transformation transformation):实现transform中transform(Bitmap source)方法进行bitmap处理
加载图片到指定imageView控件
into(ImageView target)
picasso创建圆形图像代码
- 新建一个类,实现 Transformation 接口
import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Paint;
import com.squareup.picasso.Transformation;
public class CircleTransform 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 squaredBitmap = Bitmap.createBitmap(source, x, y, size, size);
if (squaredBitmap != source) {
source.recycle();
}
Bitmap bitmap = Bitmap.createBitmap(size, size, source.getConfig());
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
BitmapShader shader = new BitmapShader(squaredBitmap,
BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);
paint.setShader(shader);
paint.setAntiAlias(true);
float r = size / 2f;
canvas.drawCircle(r, r, r, paint);
squaredBitmap.recycle();
return bitmap;
}
@Override
public String key() {
return "circle";
}
}
- 然后简单地应用的方式
Picasso.with(context).load(url).transform(new CircleTransform()).into(ImageView);
- 运行效果: