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

相关文章

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

基于Python+PyQt5打造一个跨平台Emoji表情管理神器

《基于Python+PyQt5打造一个跨平台Emoji表情管理神器》在当今数字化社交时代,Emoji已成为全球通用的视觉语言,本文主要为大家详细介绍了如何使用Python和PyQt5开发一个功能全面的... 目录概述功能特性1. 全量Emoji集合2. 智能搜索系统3. 高效交互设计4. 现代化UI展示效果

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)

《如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)》:本文主要介绍如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)问题,具有很好的参考价值,希望对大家有所帮助,如有... 目录先在你打算存放的地方建四个文件夹更改这四个路径就可以修改默认虚拟内存分页js文件的位置接下来从高级-

PyCharm如何更改缓存位置

《PyCharm如何更改缓存位置》:本文主要介绍PyCharm如何更改缓存位置的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录PyCharm更改缓存位置1.打开PyCharm的安装编程目录2.将config、sjsystem、plugins和log的路径