`
切切歆语
  • 浏览: 28124 次
  • 性别: 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中图片加载框架Picasso的使用

    Android中图片加载框架Picasso的使用,详细了解请移步:http://blog.csdn.net/zxc514257857/article/details/71430300

    Picasso框架加载图片

    picasso是Square公司开源的一个Android图形缓存库,可以实现图片下载和缓存功能。当然使用起来也是非常的简单。 Picasso框架的简单使用,有加载图片,设置圆形图片,动态设置图片弧角。

    设计简单的Android图片加载框架

    目前Android 发展至今优秀的图片加载框架太多,例如: Volley ,Picasso,Imageloader,Glide等等。但是作为程序猿,懂得其中的实现原理还是相当重要的,只有懂得才能更好地使用。于是乎,今天我就简单设计一个网络...

    Android常用的图片加载库

    图片加载涉及到图片的缓存、图片的处理、图片的显示等。四种常用的图片加载框架,分别是Fresco、ImageLoader、 Picasso、 Glide,包括他们各自的优缺点、使用步骤...

    Android 常见的图片加载框架详细介绍

    Android 常见的图片加载框架 图片加载涉及到图片的缓存、图片的处理、图片的显示等。而随着市面上手机设备的硬件水平飞速发展,对图片的显示要求越来越高,稍微处理不好就会造成内存溢出等问题。很多软件厂家的通用...

    Android网络图片加载缓存处理库的使用

    ImageLoader和Picasso 框架,代码可运行,有详细注释。

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

    Android中图片加载框架Glide的使用,详细了解请移步:http://blog.csdn.net/zxc514257857/article/details/71683700

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

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

    尚硅谷Android视频《Picasso》

    教程名称: 尚硅谷Android视频《Picasso》 Picasso是Square公司出品的一个强大的图片下载和缓存图片库。本视频详细了Picasso框架的核心功能包括且不仅限于:基本方法加载图片、在listview中加载图片和36种转换的...

    Android入门教程之Picasso框架

    Picasso是一个Android图片加载缓存框架,它具有如下特性:  1.支持任务优先级,会优先加载“优先级”较高的图片。  2.带有统计监控功能,可以统计缓存命中率,实时监控已使用的内存等等。  3.能够根据当前网络...

    Android 图片缓存机制的深入理解

    Android加载一张图片到用户界面是很简单的,但是当一次加载多张图片时,情况就变得复杂起来。很多情况下(像ListView、GridView或ViewPager等组件),屏幕上已显示的图片和即将滑动到当前屏幕上的图片数量基本上是...

    Android通用流行框架大全【整理】

    Android Universal Image Loader一个强大的加载,缓存,展示图片的库Picasso一个强大的图片下载与缓存的库Fresco一个用于管理图像和他们使用的内存的库Glide一个图片加载和缓存的库 3. 图片处理 Picasso-...

    Android中Glide加载库的图片缓存配置究极指南

    图片加载框架用了不少,从afinal框架的afinalBitmap,Xutils的BitmapUtils,老牌框架universalImageLoader,著名开源组织square的picasso,google推荐的glide到FaceBook推出的fresco。这些我前前后后都体验过,那么...

    Android项目开发基本框架

    eclipse开发App项目基础框架,包含 1、网络请求(带缓存):okhttp+Retrofit 2、图片加载:picasso 3、代码注解:buffer knife 5、下拉刷新:pulltorefresh 6、BaseActivity:链式管理,fragment切换。

    Android项目源码24小时今日资讯新闻客户端

    1.android图片下载缓存库picasso的使用 2.android-async-http异步线程请求库的使用 3.android超快listview的FastScrollView框架的使用 4.目前使用的一些下拉刷新、上拉加载 5.还有一些包括自己写的json解析.....

    Android代码-ImageLoader

    图片加载框架的api封装 特点 api设计参考glide,链式调用 目前底层依赖fresco和glide,picasso,直接gradle改一下就切换了 能够以同样api获取bitmap,所设置的宽高,高斯模糊,圆角或圆形效果均生效. 解决了fresco最新版...

    Android网络请求之OkHttp

    OkHttp是一款优秀的HTTP框架,它支持get请求和post请求,支持基于Http的文件上传和下载,支持加载图片,支持下载文件透明的GZIP压缩,支持响应缓存避免重复的网络请求,支持使用连接池来降低响应延迟问题 ...

Global site tag (gtag.js) - Google Analytics