`
切切歆语
  • 浏览: 30485 次
  • 性别: Icon_minigender_1
  • 来自: 泸州市
社区版块
存档分类
最新评论

Android图片加载框架之Picasso非常好的图片加载缓存库

 
阅读更多

简介:

Picasso是Square公司开源的一个Android图形缓存库, 可以实现图片加载(本地和网络)和缓存功能。

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

jar包下载: Picasso.jar

Paicsso可以实现图片的很多功能,drawable/mipmap下图片加载,SD卡图片加载,网络图片加载(可自己设置是否缓存),图片裁剪等。

Picasso实现了图片的异步加载,并解决了Android中加载图片时常见的一些问题,它有以下特点:

  1. 在Adapter中取消了不在视图范围内的ImageView的资源加载,因为可能会产生图片错位;
  2. 使用复杂的图片转换技术降低内存的使用
  3. 自带内存和硬盘的二级缓存机制

效果如图:

案例功能介绍

1:加载本地图片

 int resourceId = R.mipmap.ic_launcher;
 Picasso.with(this).load(resourceId).into(iv1);

2:加载SD卡图片

 File file = new File(path2);
 Picasso.with(this).load(file).into(iv2);

3:普通加载网络图片

Picasso.with(this).load("http://img.my.csdn.net/uploads/201407/26/1406383243_5120.jpg").into(iv3);


4:加载图片并裁剪

Picasso.with( this).load("url").resize(99,99).centerInside().into(iv4);


5:初始化图片和错误时的图片

 Picasso.with(this).load("url")
                   .placeholder(R.mipmap.ic_launcher)//默认显示图片
                   .error(R.mipmap.ic_launcher)//加载时出现错误显示的图片
                   .into(iv5);

6:加载图片过大要放弃缓存( Picasso默认会使用设备的15%的内存作为内存图片缓存,且现有的api无法清空内存缓存。我们可以在查看大图时放弃使用内存缓存,图片从网络下载完成后会缓存到磁盘中,加载会从磁盘中加载,这样可以加速内存的回收

Picasso.with(this).load("url")//查看大图放弃缓存,加速内存的回收
                  .memoryPolicy(NO_CACHE, NO_STORE)
                  .into(iv6);

7: 计算出最佳的大小及最佳的图片质量来进行图片展示 ( 减少内存 )

Picasso.with(this).load("http://img.my.csdn.net/uploads/201407/26/1406383243_5120.jpg")
                   .fit()
                   .into(img8);

8:自定义图片控件加载

   /**
          *  重写ImageView的onDetachedFromWindow方法,在它从屏幕中消失时回调,去掉drawable引用,能加快内存的回收。
          *  priority()设置图片加载的优先级
          * 如果一个屏幕上顶部图片较大,而底部图片较小,因为Picasso是异步加载,所以小图会先加载出来,但是对于用户来说,更希望看到的是上面的图片先加载,
          * 底部的图片后加载,Picasso支持设置优先级,分为HIGH, MEDIUM, 和 LOW,所有的加载默认优先级为MEDIUM;
          */
Picasso.with(this).load("http://img.my.csdn.net/uploads/201407/26/1406383243_5120.jpg")
                  .priority(HIGH)
                  .into(recyclerImageView);


9:列表加载(.tag的使用)

 Picasso.with(context).load("url"])
                      .tag("RecyclerView") //参数为 Object
                      .into(viewHolder.imageView);

补充:

//因为图片的旋转都是相对(0,0)进行操作,所以如果我们想自定义相对于某个点,也是可以的,只需要调用
//.rotate(float degrees, float pivotX, float pivotY)

 Picasso.with(context).load("url").rotate(90f) //旋转90度
                .into(imageViewSimpleRotate);

新进程中查看大图

列表页的内存已经非常稳定,但是查看大图时,大图往往占用了20+m内存,加上现有进程中的内存,非常容易oom,在新进程中打开Activity成为比较取巧的避免oom的方式。

<activity android:name=".DetailActivity" android:process=":picture"/>

添加程序所需要的依赖:

compile 'com.squareup.picasso:picasso:2.5.2'


AndroidManifest.xml添加权限

  <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


源码点击下载


分享到:
评论

相关推荐

    Android-很简单的android图片加载框架Picasso

    **Android 图片加载框架 Picasso 深度解析** 在 Android 应用开发中,图片的加载、缓存和展示是一项非常重要的任务。Picasso 是一个由 Square 公司开发的简单易用的图片加载库,它极大地简化了 Android 应用中的...

    Android中图片加载框架Picasso的使用

    Picasso是一个由Square公司开发的流行图片加载库,它简化了图片的加载、缓存和显示过程。本文将深入探讨Picasso在Android中的使用方法,以及如何利用它来优化图片处理。 首先,我们来看一下Picasso的基本用法。在...

    android主流图片加载框架 picasso,demo已经配置好,导入就可以运行

    在Android开发中,图片加载框架是必不可少的一部分,用于优化应用性能和用户体验。Picasso是一款由Square公司开发的流行图片加载库,它简化了图片的加载、缓存和展示过程。本教程将深入探讨Picasso的基本使用和核心...

    自己实现的Android 三级缓存图片加载框架

    本项目名为"自己实现的Android 三级缓存图片加载框架",其核心目标就是构建一个类似Glide或Picasso的高效图片加载系统,具备多线程加载功能。 首先,让我们理解一下"三级缓存"的概念。在Android的图片加载框架中,...

    Android图片加载框架

    本篇文章将深入探讨“Android图片加载框架”,以"Android-Universal-Image-Loader"为例,这是一个广泛使用的开源库,具有轻量级、适应性强的特点。 "Android-Universal-Image-Loader"(简称UIL)是一个强大的图片...

    图片缓存框架使用

    2. **图片缓存框架的选择**:Android社区中有多个知名的图片缓存框架可供选择,如Universal Image Loader、Picasso、Glide、Fresco等。这些框架都提供了强大的图片加载、缓存和显示功能,以及灵活的配置选项,开发者...

    Android-ImageLoaderAndroid图片加载框架的api封装

    本篇将深入探讨Android图片加载框架的API封装,重点关注Fresco、Glide和Picasso这三大主流库,并介绍如何实现大图预览功能,确保即使在处理大型或轮播图片时,内存占用也能保持在较低水平。 首先,Fresco是一个强大...

    Android 图片加载框架

    Android 图片加载框架是Android应用开发中的重要组成部分,主要用于优化图片的加载、缓存和显示,以提升用户体验并减少内存消耗。"Android-Universal-Image-Loader-master" 是一个广泛使用的开源项目,提供了完整的...

    图片加载框架大合集

    在IT行业中,图片加载框架是移动应用开发中的一个重要组成部分,特别是在Android和iOS平台上。这些框架优化了图片的加载、缓存和显示过程,为开发者提供了更高效、更省资源的解决方案。本文将深入探讨“图片加载框架...

    android图片框架Glide和Picasso详解Demo

    Glide和Picasso是两个非常流行的Android图片加载库,它们都提供了高效、简洁的API来处理图片显示。本篇将详细介绍这两个框架,并进行对比分析。 首先,我们来看Glide。Glide是一款由Google开发的专门为Android平台...

    Picasso框架加载图片

    **Picasso框架加载图片** Picasso,由知名软件开发公司Square开发并开源,是一个专为Android平台设计的强大的图像处理库。它简化了在Android应用中加载、缓存和显示网络图片的操作,使得开发者能够更加专注于应用的...

    android切换图片加载框架 代理

    2. 实现具体加载库:针对每一种图片加载框架(如Glide、Picasso),实现`ImageLoader`接口,将对应的加载逻辑写入这些实现类中。 ```java public class GlideImageLoader implements ImageLoader { @Override ...

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

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

    Android 高效的图片加载框架(非第三方)程序源码

    本教程将探讨一种非第三方的Android图片加载框架的源码分析,帮助开发者理解图片加载的基本原理,并能根据需求进行定制化开发。源码来源于CSDN博主的文章,如果有任何疑问,可以通过链接在博客下留言。 首先,我们...

    android端用于异步加载图片,内存缓存,文件缓存,imageview显示图片时增加淡入淡出动画。.zip

    在Android应用开发中,图片加载是一项关键任务,尤其是在处理大量图片或者网络图片时。这个项目的标题和描述揭示了几个核心知识点,包括异步加载图片、内存缓存、文件缓存以及ImageView显示图片时的淡入淡出动画。...

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

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

    android异步加载图片

    3. **图片库选择**:在Android社区中,有许多成熟的图片加载库,例如`Glide`、`Picasso`、`Fresco`等。这些库都支持异步加载,提供了缓存机制、图片缩放、占位符、加载失败图等功能。"ImageLoader-develop"可能是...

    安卓图片加载框架

    在安卓应用开发中,图片加载框架扮演着至关重要的角色,因为它们能有效地处理图片的下载、缓存和显示,从而优化用户体验。标题“安卓图片加载框架”和描述中提到的“快速加载”、“图片缓存问题”以及“图片操作”等...

    android异步加载网络图片,双缓存内存加sd卡缓存 绝对不会出现内存溢出oom

    通过合理的实践和优化,我们可以创建出一个高效、稳定的图片加载框架,提升用户体验。在提供的"multiimagechooser-master"项目中,应该包含了一个具体的实现示例,开发者可以通过学习和研究,加深对此技术的理解和...

Global site tag (gtag.js) - Google Analytics