• android:强大的图片下载和缓存库Picasso


    1.Picasso简单介绍

    Picasso是Square公司出品的一个强大的图片下载和缓存图片库。官方网址是:http://square.github.io/picasso/

    仅仅须要一句代码就能够将图片下载并设置到ImageView上。

    Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);


    2.主要特点

    2.1Adapter downloads

    使用ListView,GridView的时候,自己主动检測Adapter的重用(re-use),取消下载,使用缓存。

    @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图像处理与变换

    将图像进行变换,以更好的适应布局控件等,减小内存开销。

    Picasso.with(context)
      .load(url)
      .resize(200, 200)
      .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()";
    		}
    	}

    然后设置transform方法就能够了:

    Picasso.with(this).load("http://i.imgur.com/DvpvklR.png")
    				.transform(new CropSquareTransformation()).into(iv_test2);

    效果图例如以下:



    2.3。支持设置载入之前的图片,和载入失败后的图片。

    如:

    Picasso.with(this)
    	    .load("http://i.imgur.com/DvpvklR.png")
    	    .placeholder(R.drawable.abc)
    	    .error(R.drawable.ic_launcher)
    	    .transform(new CropSquareTransformation())
    	    .into(iv_test1);

    ImageView创建时显示abc.png,假设载入成功,显示的是DvpvklR.png,假设载入失败,显示ic_launcher.png.

    2.4支持载入本地图片和sdcard中的图片文件等。

    Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);
    Picasso.with(context).load(new File(...)).into(imageView2);


    Picasso下载地址:http://square.github.io/picasso/


    未经同意不得用于商业目的
  • 相关阅读:
    activemq安装及使用
    匿名内部类的简单使用
    Struts2中动态方法调用
    重定向和转发的区别
    result转发到一个action
    在Android Studio中导入jar包
    架构文档类别
    Linux/Unix下pid文件的作用
    【8.21校内测试】【最大生成树】【树状数组】【数学】
    【BZOJ】2653: middle
  • 原文地址:https://www.cnblogs.com/yxwkf/p/3903115.html
Copyright © 2020-2023  润新知