Picasso:一个专为Android打造的强大的图片下载和缓存库

2024-03-28 21:32

本文主要是介绍Picasso:一个专为Android打造的强大的图片下载和缓存库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

在Android应用中,图片消费了大量的资源,却为应用提供了很好的视觉体验。幸运的是,Picasso为你的应用提供了非常容易的图片加载方式——通常一行代码就可以搞定!

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

Picasso处理了Android上图片加载的许多坑:

1)在Adapter中,处理了ImageView的循环利用和取消下载。

2)耗费最小的内存处理了复杂的图形变换。

3)在内存和磁盘中自动缓存图片。


特点

Adapter中的下载

自动检测adapter中的重用功能,且一旦发现重用,将自动取消之前的下载。

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

你也可以自定义图片的转换方式以达到更复杂的变换要求。

public class CropSquareTransformation implements Transformation {@Override public Bitmap transform(Bitmapsource) {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()"; }
}

CropSquareTransformation这个类的一个实例传递给transform()函数即可。

占位图片

Picasso同时支持“正在下载”时和“图片下载出错”后这两种状态展示的默认图片。

Picasso.with(context).load(url).placeholder(R.drawable.user_placeholder).error(R.drawable.user_placeholder_error)
.into(imageView);

Picasso至多会尝试三次下载,如果三次下载都失败了,就会在原图位置上展示“图片下载出错”时的图片。

资源加载

Picasso支持将resources、assets、files和contentprovider作为图片的加载源。

Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);
Picasso.with(context).load("file:///android_asset/DvpvklR.png").into(imageView2);
Picasso.with(context).load(newFile(...)).into(imageView3);

调试指示器

开发者可以在图片的左上角展示一个彩色的小三角,不同的颜色指明了图片资源的不同来源。调用Picasso对象的setIndicatorsEnabled(true)方法就可以了。


下载

http://repo1.maven.org/maven2/com/squareup/picasso/picasso/2.5.2/picasso-2.5.2.jar

Picasso的源代码,例子和这个网址(http://square.github.io/picasso/)都放在了 GitHub

MAVEN<dependency><groupId>com.squareup.picasso</groupId><artifactId>picasso</artifactId><version>2.5.2</version>
</dependency>GRADLEcompile 'com.squareup.picasso:picasso:2.5.2'

为Picasso做贡献

如果你想为Picasso开发贡献你的代码,你可以上github,然后fork该代码库,再把你的修改发给我们(pull request)。

在提交代码的时候,请保持代码的习惯和风格与原来的一致以便于尽可能保持代码的可阅读性。同时,为了保证你的代码正确编译,请运行mvn clean verify。

你需要同意Individual ContributorLicense Agreement (CLA)才能将你的代码合并到Picasso工程中。

重要资料

1]Javadoc : http://square.github.io/picasso/javadoc/index.html

[2]StackOverflow:http://stackoverflow.com/questions/tagged/picasso?sort=active

许可证

Copyright 2013 Square, Inc.

 

Licensed under the Apache License, Version2.0 (the "License");

you may not use this file except incompliance with the License.

You may obtain a copy of the License at

 

  http://www.apache.org/licenses/LICENSE-2.0

 

Unless required by applicable law or agreedto in writing, software

distributed under the License isdistributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANYKIND, either express or implied.

See the License for the specific languagegoverning permissions and

limitations under the License.

 

原文链接:http://square.github.io/picasso/







这篇关于Picasso:一个专为Android打造的强大的图片下载和缓存库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/856739

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

Rsnapshot怎么用? 基于Rsync的强大Linux备份工具使用指南

《Rsnapshot怎么用?基于Rsync的强大Linux备份工具使用指南》Rsnapshot不仅可以备份本地文件,还能通过SSH备份远程文件,接下来详细介绍如何安装、配置和使用Rsnaps... Rsnapshot 是一款开源的文件系统快照工具。它结合了 Rsync 和 SSH 的能力,可以帮助你在 li

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

Redis缓存问题与缓存更新机制详解

《Redis缓存问题与缓存更新机制详解》本文主要介绍了缓存问题及其解决方案,包括缓存穿透、缓存击穿、缓存雪崩等问题的成因以及相应的预防和解决方法,同时,还详细探讨了缓存更新机制,包括不同情况下的缓存更... 目录一、缓存问题1.1 缓存穿透1.1.1 问题来源1.1.2 解决方案1.2 缓存击穿1.2.1

用Java打造简易计算器的实现步骤

《用Java打造简易计算器的实现步骤》:本文主要介绍如何设计和实现一个简单的Java命令行计算器程序,该程序能够执行基本的数学运算(加、减、乘、除),文中通过代码介绍的非常详细,需要的朋友可以参考... 目录目标:一、项目概述与功能规划二、代码实现步骤三、测试与优化四、总结与收获总结目标:简单计算器,设计

Redis与缓存解读

《Redis与缓存解读》文章介绍了Redis作为缓存层的优势和缺点,并分析了六种缓存更新策略,包括超时剔除、先删缓存再更新数据库、旁路缓存、先更新数据库再删缓存、先更新数据库再更新缓存、读写穿透和异步... 目录缓存缓存优缺点缓存更新策略超时剔除先删缓存再更新数据库旁路缓存(先更新数据库,再删缓存)先更新数

el-select下拉选择缓存的实现

《el-select下拉选择缓存的实现》本文主要介绍了在使用el-select实现下拉选择缓存时遇到的问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录项目场景:问题描述解决方案:项目场景:从左侧列表中选取字段填入右侧下拉多选框,用户可以对右侧

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外