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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SPSS 性别卡方分析[通俗易懂]

    SPSS 性别卡方分析[通俗易懂]1.新建数据集2.打开变量视图,分别输出group、sex和number其中标签是对数据的说明,值是spss中的显示,比如定义1=subject,则输入1就等价于subject变量视图:数据视图:3.数据分析:点击数据–个案加权–将人数加入个案加权系数否则结果一般有误4.卡方检验分析–描述统计–交叉表–统计–卡方检验确定结果输出:…

    2022年5月16日
    97
  • Java 图片URL转Base64编码

    Java 图片URL转Base64编码前言实现方式:通过图片URL获取二进制流,再对字节数组进行Base64编码转换具体实现实现类importsun.misc.BASE64Encoder;importjava.io.ByteArrayOutputStream;importjava.io.InputStream;importjava.net.HttpURLConnection;importjava.net.URL;importjava.util.regex.Matcher;importjava.util.r

    2022年9月14日
    0
  • 微信小程序的面试题_小程序面试题汇总

    微信小程序的面试题_小程序面试题汇总小程序面试题简单描述下微信小程序的相关文件类型?一、WXML(WeiXinMarkupLanguage)是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。内部主要是微信自己定义的一套组件。与html差不多。二、WXSS(WeiXinStyleSheets)是一套样式语言,用于描述WXML的组件样式,与css差不多二、js逻辑处理,…

    2022年4月19日
    62
  • 怎么测试服务器端口是否对外开放_如何查看windows某个端口是否打开

    怎么测试服务器端口是否对外开放_如何查看windows某个端口是否打开在工作中处理服务器故障问题的时候,经常需要检测一下Windows的服务器业务端口是否开放,是否能正常在外面通讯。下面小编与大家分享一下如何在windows环境下检测服务器端口是否开放。1.我们在工作中经常接触的都是TCP,UDP的端口都是很少用的。检测TCP端口能否在外面访问的方法很简单,telnet可以测试出来结果例如telnetwww.baidu.com80…

    2022年10月10日
    0
  • 深度学习环境搭建之cuda、cudnn以及pytorch和torchvision的whl文件安装方法

    深度学习环境搭建之cuda、cudnn以及pytorch和torchvision的whl文件安装方法一、前言假设已经装好了pycharm、anaconda,接下来需要安装新版的显卡驱动,安装cuda、cudnn、pytorch和pytorchvision,这几个环境的版本互相关联,为了能使用更新的项目,尽量安装最新版本的环境。二、安装新版显卡驱动1、安装前的检查在安装新版显卡驱动之前,先在cmd中输入:nvidia-smi注意:-符号与nvidia和smi不能有空格。右上角的CUDAVersion11.1表示最高能安装CUDA11.1的版本,如果CUDA11.1

    2022年10月7日
    0
  • selenium面试题总结——测试经验分享

    selenium面试题总结——测试经验分享selenium上传文件操作,需要被操作对象的type属性是什么?

    2022年6月20日
    39

发表回复

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

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