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


相关推荐

  • dataframe loc iloc_python的isnull函数

    dataframe loc iloc_python的isnull函数关于python数据分析常用库pandas中的DataFrame的loc和iloc取数据基本方法总结归纳及示例

    2022年8月30日
    3
  • 实用的谋生技能_unity给人物模型加动作

    实用的谋生技能_unity给人物模型加动作Unity小科普老规矩,先介绍一下Unity的科普小知识:Unity是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。Unity平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。也可以简单把Unity理解为一个游戏引擎,可以用来专业制作游戏!…

    2025年11月5日
    3
  • ssh公私钥登录方式设置

    ssh公私钥登录方式设置

    2022年1月30日
    47
  • ubuntu如何杀死进程「建议收藏」

    ubuntu如何杀死进程「建议收藏」一、得到所有进程先用命令查询出所有进程ps-ef二、杀死进程我们使用ps-ef命令之后,就会得到一些列进程信息,有进程pid什么的,如果你要杀死莫个进程的话,直接使用命令killpid

    2022年9月21日
    3
  • linux如何卸载jdk版本并重装_centos卸载jdk

    linux如何卸载jdk版本并重装_centos卸载jdklinuxcentos7自带了openjdk,这个版本的jdk是缺少一部分功能的,最好重新安装oraclejdk。但在没有卸载openjdk就安装oraclejdk时,部分依赖包装不上,后期程序运行时会出现问题。以下为卸载jdk的步骤(openjdk或oraclejdk)和安装步骤。#1.查看目前系统中包含的jdk版本rpm-qa|grepjdk#2.得到的结果如下:java-1.8.0-openjdk-1.8.0.322.b06-1.e

    2022年10月1日
    4
  • 信道和带宽_信道带宽怎么计算

    信道和带宽_信道带宽怎么计算信道和带宽在用cmw500测试不同band下的throughput时,发现module在某几个band注册不上小区。后来经过同事顺滑的演示,得知是因为不同band支持不同的带宽,而我一直设置cmw500的Cellbandwidth=20MHZ,对于那些最大只支持10MHZ的band自然注册不上。关于不同Band支持的带宽可以参考下表(3GPPTS36.101V17.2.0(2021-06))Table5.6.1-1:E-UTRAchannelbandwidth结尾处分享一

    2022年10月7日
    6

发表回复

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

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