• picasso-安卓的图片下载缓存库


      我们的项目中有使用到picasso库,这段时间我负责一个广告位的对接,于是在这里分享从零开始学习picasso的过程。

      第一篇picasso的参考博客:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0731/1639.html

    1.首先我们先简单了解Picasso 

      根据之前学习过的知识,我们可以使用HttpUrlConnection和AsyncTask来远程加载图片,但是这种方法的代码比较繁琐。不仅需要我们编写大量的代码,还需要处理缓存和下载管理等,所以建议使用自己封装的库或者第三方库;

      这里我们介绍一下Picasso,picasso是Square公司开源的一个Android图形缓存库,地址http://square.github.io/picasso/,可以实现图片下载和缓存功能。

      Picasso的特性:

      • 在adapter中回收和取消当前的下载;
      • 使用最少的内存完成复杂的图形转换操作;
      • 自动的内存和硬盘缓存;
      • 图形转换操作,如变换大小,旋转等,提供了接口来让用户可以自定义转换操作;
      • 加载网络或本地资源;  

    2.Picasso的使用

    a.Picasso的基本使用    

      picasso的时候非常非常简单,将Picasso添加进项目后,只需要一句就可以获取到。

      Picasso.with(context).load(imageUrl).into(imageView); 

      这一行代码虽短,但实现的内容一点也不少:

        a.自动将图像缓存在本地

        b.通过图片压缩转换以减少内存消耗

        c.自动处理了ImageView的回收,即自动取消不在视野范围内的ImageView视图资源的加载;

     

     

    Placeholder:.placeholder()

    我们可能不需要解释这种现象:一个空的ImageView在你的UI中肯定不好看。如果你使用Picasso,你可能通过网络连接来加载图片,这取决于用户的环境,这可能会花费很长时间。一个比较好的解决方案是在加载图片的过程中,你可以先加载一个本地图片当做替代图片,直到从网络下载的图片加载出来。 
    Picasso的流接口使得这样实现变得非常简单!只需要调用.placeHolder() 这个方法,在加载出网络图片之前,Picasso将会展示placeholder的图片。

    Picasso
        .with(context)
        .load(UsageExampleListViewAdapter.eatFoodyImages[0])
        .placeholder(R.mipmap.ic_launcher) // can also be a drawable
        .into(imageViewPlaceholder);

    很明显,你不可以将一张网络上的图片用作替代图片,因为这依旧需要从网上加载。app上的资源和图片是即时可用的。然而,对于load()这个参数,Picasso可以接受所有类型的值。这个可能不会被加载出来(无网络连接,服务器崩溃),在下一节,我们会讨论error placeholder。

    Error Placeholder:.error()

    我们假定app需要从网络上加载图片,但是当前网络出问题了。Picasso会将错误返回并且做出合适的处理。在我们做出相应的操作之前,我们可以先使用一张替代图片来代替来告诉用户图片加载出错了。这和之前Picasso处理placeholder的流接口是相同的,只是使用一个名为error()的函数。

    Picasso
        .with(context)
        .load("http://futurestud.io/non_existing_image.png")
        .placeholder(R.mipmap.ic_launcher) // can also be a drawable
        .error(R.mipmap.future_studio_launcher) // will be displayed if the image cannot be loaded
        .into(imageViewError);
        ```
    就是这个了!如果你想要加载的图片并没有加载,Picasso将会加载`R.mipmap.future_studio_launcher` 。同样,error()所传的参数只能是被初始化过得drawable对象或者它们的id。
    
    #noFade()的使用
    无论在加载图片之前你有没有设置placeholder,Picasso总是自动渐显(fade in)加载图片,因为这会让你的ui变化不那么突兀。如果你希望直接加载图片,而没有渐显(fade)的效果,使用`.noFade()`这个方法即可。
    这会直接加载图片,而不带任何效果。在你这样做之前,请先确定你是真的需要这个效果。
    知道所有的参数都是独立的并且不依赖于其他参数这很重要。例如,你可以设置`.error()` 而不需要调用`.placeholder()`. 任何参数进行组合都是有可能的。
    
    #noPlaceholder的使用
    你可能会发现我们曾经使用过noPlaceholder()。很重要的一点是:这并不是取消之前设置的`.placeholder()` 或者`.error()` 。这适用于另一种不同的情况。
    我们来想一下下面这种情况:你在ImageView中加载了一张图片,一段时间过后,你想在同样的ImageView中加载另一张图片。使用
     
  • 相关阅读:
    学好C++必须要注意的十八个问题
    c++设计模式-----抽象工厂模式
    C++设计模式----工厂模式
    c++设计模式----装饰模式
    常用算法(二)—高级算法
    常用算法收集
    修改admin中App的名称与表的名称
    数据分析画图,使用原生sql查询数据
    组合搜索框的实现
    django前端分页小组件
  • 原文地址:https://www.cnblogs.com/slothccc/p/6632502.html
Copyright © 2020-2023  润新知