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

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

效果图例如以下:

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


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/

未经同意不得用于商业目的
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118707.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 加密芯片介绍 加密芯片选择(加密IC) 加密芯片原理

    加密芯片介绍 加密芯片选择(加密IC) 加密芯片原理原文链接:https://blog.csdn.net/chengjian815/article/details/107516575前端时间有研究多款加密芯片,加密算法实现,以及激活成功教程可能,也有一些个人的观点,仅供参考;一,加密芯片的来源及工作流程:市面上的加密芯片,基本都是基于某款单片机,使用I2C或SPI等通讯,使用复杂加密算法加密来实现的,流程大致如下:主控芯片生成随机码–>主控芯片给加密芯片发送明文–>加密芯片通过加密算法对明文进行加密生成密文–>

    2022年6月25日
    58
  • wxpython自定义控件_wxPython 教程(十三) 自定义控件

    wxpython自定义控件_wxPython 教程(十三) 自定义控件本节讲述wxPython自定义控件。GUIToolkits会提供多数常用的部件,比如按钮、文本控件、滚动条、滑块等等。wxPython也会提供很多控件,但若需要更定制化的控件还是需要开发者自己编写。自定义控件通过两种方式创建:一种是通过修改或增强现有控件,另一种是我们从零开始直接创建。超链接控件第一个例子是创建一个超链接控件,我们基于wx.lib.stattext.GenStatic…

    2022年5月11日
    30
  • Padstart_notation pad pro

    Padstart_notation pad pro//将一个ipv4地址转换为10进制数输出//eg:192.168.1.1functiontranslateIP2Dig(ipStr){letipArr=ipStr.split(‘.’)letresArr=[]ipArr.forEach(item=>{letstr=parseInt(item).toString(2)str=str.padStart(8,0)resArr.push(str)})retu

    2022年9月9日
    3
  • 浅析Anycast技术[通俗易懂]

    浅析Anycast技术[通俗易懂]什么是AS号码AS号码即自治系统号码,是用来标识独立的自治系统的,在同一个自治系统内,使用相同内部路由协议,自治系统间使用外部路由协议(通常是BGP协议)。申请AS号码的单位需要与两家以上(包括两家)、有不同AS号码的网络接入商进行网络互联,并计划三个月内与他们同时运行BGP协议进行外部路由。什么是BGPAnyCast?BGPanycast就是利用一个(多个)as号码在不同的地区广播相同的一个ip段。利用bgp的寻路原则,短的aspath会选成最优路径(bgp寻路原则之n),从.

    2022年5月10日
    61
  • Pytest(13)命令行参数–tb的使用

    Pytest(13)命令行参数–tb的使用前言pytest使用命令行执行用例的时候,有些用例执行失败的时候,屏幕上会出现一大堆的报错内容,不方便快速查看是哪些用例失败。–tb=style参数可以设置报错的时候回溯打印内容,可以设置参

    2022年7月31日
    2
  • ctags使用方法

    ctags使用方法

    2021年8月24日
    68

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号