图片加载框架之Picasso

Picasso简介

Picasso 是Square公司出品的一个强大的图片下载和缓存图片库可以实现图片下载和缓存功能。

picasso使用简单 Picasso.with(context).load(url).into(imageView) ;

Picasso 下载

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);
  • 运行效果:

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值