如何使用picasso 对Android图片下载缓存

相比较其他,picasso的图片缓存更加简单一些,他只需要一行代码就可以表述:导入相关jar包

Picasso.with(context).load("图片路径").into(ImageView控件);

listView加载图片,在现在的app中都是非常常见的,我们往往要处理图片加载缓慢,错位等常见问题。Picasso不仅实现了图片的异步加载,同时对一些问题也做了解决和优化

比如:1.当在listView,滑动的时候,我们需要在adapter中把已经不再视野的ImageView图片资源进行回收,否则会出现图片错位。

2.将图片压缩转换,减少内存消耗,

@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);
}

它也可以进行图片转换,实际上就是裁剪了,我觉得

Picasso.with(context).load(url).resize(50, 50).centerCrop().into(imageView);
 Picasso.
 // 创建Picasso对象
  with(context).
   // 载入Url,此方法有很多重载,可自行尝试
  load(url).
    //读取本地文件不缓存
 memoryPolicy(MemoryPolicy.NO_CACHE).
 //读取网络文件不缓存
networkPolicy(NetworkPolicy.NO_CACHE).
   //图片显示之前的占位图片
placeholder(R.drawable.drawer_avatar_default).
  //重新设置宽高, 此处使用了从Dimen文件获取, 推荐这种方式,也可以直接设置PX值
resize(context.getResources().getDimensionPixelSize(R.dimen.space_64dp),

context.getResources().getDimensionPixelSize(R.dimen.space_64dp)).    //按照上一步重置的宽高居中显示
 centerCrop().
   //使用自定义变换, 此处是圆形头像效果
   transform(new CircleTransformation()).
   //不淡入淡出, 直接显示
  noFade().
  //目标ImageView
  into(target);

自定义圆形的转换类

public class CircleTransformation implements Transformation {
 private static final int STROKE_WIDTH = 6;
  @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 avatarPaint = new Paint();
  BitmapShader shader = new BitmapShader(squaredBitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);        avatarPaint.setShader(shader);
     Paint outlinePaint = new Paint();        outlinePaint.setColor(Color.WHITE);        outlinePaint.setStyle(Paint.Style.STROKE);        outlinePaint.setStrokeWidth(STROKE_WIDTH);        outlinePaint.setAntiAlias(true);
    float r = size / 2f;
  canvas.drawCircle(r, r, r, avatarPaint);
   canvas.drawCircle(r, r, r - STROKE_WIDTH / 2, outlinePaint);
        squaredBitmap.recycle();
    return bitmap;
  }
@Override
  public String key() {
   return "circleTransformation()";    }
时间: 2024-10-15 06:05:33

如何使用picasso 对Android图片下载缓存的相关文章

毕加索的艺术——Picasso,一个强大的Android图片下载缓存库,OkHttpUtils的使用,二次封装PicassoUtils实现微信精选

毕加索的艺术--Picasso,一个强大的Android图片下载缓存库,OkHttpUtils的使用,二次封装PicassoUtils实现微信精选 官网: http://square.github.io/picasso/ 我们在上篇OkHttp的时候说过这个Picasso,学名毕加索,是Square公司开源的一个Android图形缓存库,而且使用起来也是非常的简单,只要一行代码就轻松搞定了,你会问,为什么不介绍一下Glide?其实Glide我有时间也是会介绍的,刚好上篇我们用到了Picasso,

picasso-强大的Android图片下载缓存库

编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! picasso是Square公司开源的一个Android图形缓存库,地址http://square.github.io/picasso/,可以实现图片下载和缓存功能.仅仅只需要一行代码就能完全实现图片的异步加载: Picasso.with(context).load("http://i.imgur.com/

picasso_强大的Android图片下载缓存库

picasso是Square公司开源的一个Android图形缓存库,地址http://square.github.io/picasso/,可以实现图片下载和缓存功能.仅仅只需要一行代码就能完全实现图片的异步加载: 1 Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); Api看起来非常独特,是吧. Picasso不仅实现了图片异步加载的功能,还解决了android中加载图片时需要解决

android开源项目:图片下载缓存库picasso

picasso是Square公司开源的一个Android图形缓存库,地址http://square.github.io/picasso/,可以实现图片下载和缓存功能. picasso有如下特性: 在adapter中回收和取消当前的下载: 使用最少的内存完成复杂的图形转换操作: 自动的内存和硬盘缓存: 图形转换操作,如变换大小,旋转等,提供了接口来让用户可以自定义转换操作: 加载载网络或本地资源: 可以转换为自己需要的request(Square公司开源的另一个网络支持库:retrofit支持转化

Android 图片下载

Android开发者可能会使用Universal Image Loader或者Square`s newer Picasso这些第三方的库去处理图片的加载 Universal Image Loader https://github.com/nostra13/Android-Universal-Image-Loader Square`s newer Picasso https://github.com/square/picasso Android 图片下载,布布扣,bubuko.com

SDWebImage异步的图片下载+缓存

SDWebImage托管在github上.https://github.com/rs/SDWebImage 这个类库提供一个UIImageView类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL下载次数控制和优化等特征.使用示范的代码: UITableView使用UIImageView+WebCache类(基本应用,UIImageView的一个category) 前提#import导入UIImageView+WebCache.h文件,然后在tableview的cellFor

Android图片下载以及缓存框架

实际开发中进行图片下载以及缓存的框架 介绍一下开发中常见图片加载框架的使用和对比一下优缺点. 1.Picasso 框架 在Android中开发,常需要从远程获取图片并显示在客户端,当然我们可以使用原生HttpURLConnection和AsyncTask等操作来完成,但并不推荐,因为这样不仅需要我们编写大量的代码, 还需要处理缓存和下载管理等,最好自己封装成库或者采用第三方库: 使用HttpUrlConnection和AsyncTask实现远程图片下载: 使用HttpUrlConnection和

iOS利用SDWebImage图片下载缓存

一.我们先来了解一下SDWebImage的使用: 1.导入框架,引入头文件: #import "UIImageView+WebCache.h" 也可以直接使用CocoaPods来引入和管理 (OC 如下) platform :ios, '7.0' pod 'SDWebImage', '~>3.8' (swift)并且要确保添加了use_frameworks,iOS版本为8.0+ platform :ios, '8.0' use_frameworks! 2.图片下载并缓存方法: /

Android图片二级缓存

点击下载源代码 想起刚開始写代码的时候,领导叫我写一个头像下载的方法,当时屁颠屁颠就写了一个图片下载的,每次都要去网络上请求,最后直接被pass掉了 当时的思路是这种 后来渐渐地就知道了有二级缓存这东西. 自己也阅读过非常多关于双缓存的文章. APP开发到越后面.对性能的要求越高.那么双缓存的优势就逐渐体现出来了. 所谓图片双缓存.首先到执行内存中请求,再到sd卡请求,最后到网络请求,流程图例如以下 那我们从第一部開始解析 1.先看 内存缓存的代码 [java] view plaincopy p