`
zxs19861202
  • 浏览: 916028 次
  • 性别: Icon_minigender_1
  • 来自: 湖北—》上海
社区版块
存档分类
最新评论

android 图片加载和缓存开源项目 Picasso

阅读更多

Picasso – Android系统的图片下载和缓存类库

Picasso 是Square开源的一个用于Android系统下载和缓存图片的项目。该项目和其他一些下载图片项目的主要区别之一是:使用4.0+系统上的HTTP缓存来代替磁盘缓存。

Picasso 的使用是非常简单的,例如:

帮助
1
Picasso.with(context).load("http://i.imgur.com/DvpvklR.png.into(imageView"));
Picasso有如下特性:

处理Adapter中的 ImageView 回收和取消已经回收ImageView的下载进程
使用最少的内存完成复杂的图片转换,比如把下载的图片转换为圆角等
自动添加磁盘和内存缓存
具体介绍

在Adapter中下载

自动检测Adapter中的ImageView重用和取消不必要的下载

帮助

  1. @Override public void getView(int position, View convertView, ViewGroup parent) {
  2. SquaredImageView view = (SquaredImageView) convertView;
  3. if (view == null) {
  4. view = new SquaredImageView(context);
  5. }
  6. String url = getItem(position);Picasso.with(context).load(url).into(view);
  7. }
复制代码

 


图片转换

转换图片以适合所显示的ImageView,来减少内存消耗

帮助

  1. Picasso.with(context)
  2. .load(url)
  3. .resize(50, 50)
  4. .centerCrop()
  5. .into(imageView)
复制代码


还可以设置自定义转换来实现高级效果,例如下面的矩形特效(把图片居中裁剪为矩形)

 

帮助

  1. public class CropSquareTransformation implements Transformation {
  2. @Override public Bitmap transform(Bitmap source) {
  3. int size = Math.min(source.getWidth(), source.getHeight());
  4. int x = (source.getWidth() - size) / 2;
  5. int y = (source.getHeight() - size) / 2;
  6. Bitmap result = Bitmap.createBitmap(source, x, y, size, size);
  7. if (result != source) {
  8. source.recycle();
  9. }
  10. return result;
  11. }@Override public String key() { return "square()"; }
  12. }
复制代码

 


用该类示例调用函数 RequestBuilder.transform(Transformation) 即可。

占位符图片

Picasso支持下载和加载错误占位符图片。

帮助
Picasso.with(context)
.load(url)
.placeholder(R.drawable.user_placeholder)
.error(R.drawable.user_placeholder_error)
.into(imageView);
如果重试3次(下载源代码可以根据需要修改)还是无法成功加载图片 则用错误占位符图片显示。

支持本地资源加载

从 Resources, assets, files, content providers 加载图片都支持

Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);
Picasso.with(context).load(new File("/images/oprah_bees.gif")).into(imageView2);
调试支持

调用函数 Picasso.setDebug(true) 可以在加载的图片左上角显示一个 三角形 ,不同的颜色代表加载的来源

红色:代表从网络下载的图片

黄色:代表从磁盘缓存加载的图片

绿色:代表从内存中加载的图片

如果项目中使用了OkHttp库的话,默认会使用OkHttp来下载图片。否则使用HttpUrlConnection来下载图片。

http://square.github.io/picasso/

其他功能查看项目主页:http://github.com/square/picasso

参考项目:https://github.com/nostra13/Android-Universal-Image-Loader

https://github.com/mitmel/Android-Image-Cache

https://github.com/novoda/ImageLoader

https://github.com/square/okhttp

分享到:
评论

相关推荐

    android使用Picasso自定义缓存位置

    Picasso是一款由Square公司开源的Android图片加载库,它提供了一个简单易用的API来处理图片加载任务。Picasso支持多种数据源(如网络URL、资源ID等),并且提供了丰富的配置选项,比如缓存策略、转换操作等。它的...

    android异步加载图片缓存释放

    对于图片加载库,Android社区有多个优秀的开源项目,如Picasso、Glide、 Fresco等,它们都提供了高效的图片异步加载和缓存功能。以Glide为例,它支持自动处理内存和磁盘缓存,同时提供了丰富的API来定制图片的加载、...

    android图片缓存有关的项目

    - Picasso:同样是一个流行的选择,提供了简单易用的API进行图片加载和缓存管理。 - Fresco:Facebook开源的图片加载库,擅长处理大型图片,支持复杂的图片格式,具有强大的内存管理机制。 4. 自定义图片缓存实现...

    android 网络和本地图片加载 支持异步加载并缓存

    这是一个强大的开源图片加载库,它提供了完整的解决方案,包括异步加载、内存和磁盘缓存等功能。 1. **异步加载**:Universal Image Loader库使用了工作线程进行图片的下载和解码,避免阻塞主线程。它通过配置...

    安卓图片加载缓存相关-android项目中经常会接触到加载网络图片的情况这里向大家展示几种最为常见访问网络图片的几种方式.rar

    1. **异步加载**:Android UI线程不应承担繁重的任务,如网络请求和图片解码,这可能导致应用卡顿。因此,通常使用异步加载技术,如`AsyncTask`或`Handler`来在后台线程处理图片加载。 2. **内存缓存**:内存缓存是...

    android 图片加载优化

    - Picasso:另一个流行的图片库,提供了简单的API来加载、转换和缓存图片。 - Fresco:Facebook开源的图片库,擅长处理大图,具有强大的内存管理,避免OOM。 3. **异步加载**: - 将图片加载工作放在后台线程,...

    Android大量图片加载的3级缓存

    为了简化上述过程,许多开源库如Glide、Picasso、Fresco等已经实现了高效的图片加载和缓存策略。它们提供了简单的API,可以轻松集成到项目中,处理图片的加载、解码、缓存、占位符、错误图等细节。 ### 6. 性能优化...

    Android-Litho的Picasso图片加载组件

    "Android-Litho的Picasso图片加载组件"是Android开发中的一个关键知识点,它结合了Litho库和Picasso库的优势,旨在提供高效、简洁的图片加载解决方案。下面将详细探讨这一主题。 Litho是Facebook开源的一款用于构建...

    Android 三大图片缓存原理、特性对比

    本文将针对Android平台上的三种主流图片缓存库——Universal Image Loader(简称UIL)、Picasso和Glide进行深入分析与对比。 #### 一、四大图片缓存基本信息 在Android开发领域内,Universal Image Loader、...

    安卓图片加载缓存相关-Android开发较火的第三方图片加载库.rar

    本压缩包“安卓图片加载缓存相关-Android开发较火的第三方图片加载库.rar”可能包含了多个流行的开源库,这些库能够帮助开发者高效地处理图片的加载和缓存问题,提高用户体验,同时也减轻服务器压力。 首先,我们来...

    android 下载图片并缓存

    - **Picasso**:Square公司的轻量级图片加载库,提供简单的API,支持内存和磁盘缓存,自动处理图片的缩放和裁剪。 - **Glide**:Google推荐的图片加载库,适用于复杂的图片展示场景,如动画、缩放、占位符等,它...

    android Picasso 加载图片demo,免积分

    picasso是Square公司开源的一个Android图形缓存库,地址http://square.github.io/picasso/,可以实现图片下载和缓存功能。仅仅只需要一行代码就能完全实现图片的异步加载

    Android图片加载框架

    "Android-Universal-Image-Loader"(简称UIL)是一个强大的图片异步加载和缓存框架,设计用于处理大量图片,避免因图片加载导致的内存溢出问题。它的核心特性包括: 1. **异步加载**:UIL允许在后台线程加载图片,...

    Picasso – Android系统的图片下载和缓存类库

    Picasso 是Square开源的一个用于Android系统下载和缓存图片的项目。该项目和其他一些下载图片项目的主要区别之一是:使用4.0+系统上的HTTP缓存来代替磁盘缓存。 Picasso 的使用是非常简单的,例如: 帮助 1 ...

    Android非常实用的开源项目框架

    5. **图片加载库**:如Glide、Picasso,高效加载和缓存网络或本地的图片。 6. **权限管理框架**:如EasyPermissions,处理Android运行时权限。 7. **UI动画库**:如Lottie,用于加载和播放SVG格式的动画。 8. **...

    10个Android的开源项目

    - 如`Glide`或`Picasso`,这些库专门处理图片加载和缓存问题,可以高效地处理网络和本地图片,避免内存溢出,提高应用性能。 3. **网络请求库** - `Retrofit`和`Volley`是两个常用的网络请求库,它们简化了HTTP...

    Android高级应用源码-Android 图片缓存、加载器.zip

    自定义加载器可以更好地适应特定项目需求,但需要对Android系统和图片处理有深入理解。 6. 内存优化 在处理大量图片时,需要防止内存泄漏和内存溢出。这可能涉及到Bitmap的适当配置(比如使用inSampleSize缩小图片...

    Android 图片缓存

    在实现Android图片缓存时,我们可以使用开源库如Universal Image Loader、Glide、Picasso等,它们已经封装了完善的缓存机制。这些库通常会自动处理软硬引用、内存管理和磁盘操作,开发者只需要简单调用API即可实现...

    安卓开发-Android 图片缓存、加载器.zip.zip

    2. Picasso:Picasso 是 Square 公司的一个轻量级图片加载库,它简化了图片的加载、缓存和显示过程,支持基本的图片变换和网络请求。 3. Fresco:Fresco 是 Facebook 开源的一个强大图片加载库,特别适合处理大量...

    安卓Android源码——图片缓存、加载器.zip

    常见的一些开源图片加载库,如Glide、Picasso、Fresco等,都提供了完善的缓存策略和强大的图片处理功能。比如,Glide以其简洁的API和高效的内存管理著称,支持多种资源类型,能够无缝集成到项目中;Fresco则通过使用...

Global site tag (gtag.js) - Google Analytics