黑马程序员技术交流社区

标题: 【郑州校区】Android图片加载框架Picasso最全使用教程 四 [打印本页]

作者: 我是楠楠    时间: 2017-8-17 14:26
标题: 【郑州校区】Android图片加载框架Picasso最全使用教程 四

通过前几篇的学习,我们已经对Picasso的加载图片的用法有了很深的了解,接下来我们开始分析Picasso为我们提供的其他高级功能及内存分析,Let’s Go ! (ps:想要获取更多学习资料可加qq1692250804!)


     Picasso进行图片的旋转(Rotation)
     简单的旋转,只需要增加一个角度即可,调用rotate(float degrees)

    当我们对一张图片需要进行简单的旋转处理时,只需要调用传入旋转的角度,大于0小于360即可,上代码:



复制代码

       根据某个点进行复杂的旋转操作

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



复制代码


       对图片的转化(Transformation)

      模糊一张图片

      我们可以在一张图片进行展示之前,对其进行操作,然后在展示;这时我们需要定义一个类实现Transformation,然后重写里面重要的方法,直接上代码:



复制代码

       在图片被加载之前就会被我们先处理一遍;


      对加载的资源进行复杂的操作(模糊+缩放)

       我们应该注意到,Picasso给我们提供了一个这样的API,允许我们将参数设置为一个Transformations的集合
       transform(List<? extends Transformation> transformations),这就意味着我们可以对资源进行一系列的操作;上代码:



复制代码



        这个transformations我相信已经能够给你足够强大的功能供你处理图片资源,到这里,Picasso基本所有的高级功能都被你所掌握了,已经非常好了,           下面我们就开始分析Picasso的缓存组件,让我们继续揭开Picasso的神秘面纱;


      关于缓存机制

        Picasso默认的缓存分配大小特点:



       Memory Policy


      可能有的时候你不想让Picasso去内存中进行读取而跳过此步骤,这时你可以在进行网络请求时调用memoryPolicy(MemoryPolicy policy,                     MemoryPolicy... additional),MemoryPolicy是一个枚举,只有两个值 NO_CACHE 和 ‘NO_STORE`

      代码示例:



复制代码
     
       当然,你也可以这样调用:



复制代码

       注意:调用.memoryPolicy(MemoryPolicy.NO_CACHE)虽然能避免Picasso从内存中读取资源,但是并不能避免从本地读取资源,如果你也想跳过从本地读取这一过程,请看NetworkPolicy.


      NetworkPolicy

      就像MemoryPolicy负责管理内存缓存一样,NetworkPolicy就是负责管理本地缓存的,而且二者的用法一模一样,NetworkPolicy也是一个枚举,不过它有三个值:


     

      示例代码:



复制代码
      当然,你也可以配合MemoryPolicy一起使用



复制代码


       查看图片都来源于何处,缓存指示器


        作为一个有经验的猿猿,我们肯定想知道我们所加载的图片来源于何处,是内存,本地还是从网络加载的,当然这个动作Picasso已经为我们想好了,我们只需要在请求的时候调用.setIndicatorsEnabled(true);就行了,代码:



复制代码

       这样每张图片在显示的时候,左上角都会有一个小标记,分别又三种三色,蓝色,绿色,红色;




      查看图片加载用时

       缓存指示器能帮助我们查看图片的加载来源,但是并不能精确的知道每张图片从网络加载时所用的时间,在请求开始我们就加上调用.setLoggingEnabled(true),来通过输出日志的方式查看每张网络请求的资源所用的时间; 上代码:



复制代码

       然后通过在控制台上查看日志信息,如下:




复制代码


      整体加载分析StatsSnapshot


       你可能有一个场景,需要看一个大图的加载在内存中占用了多大,你可以调用StatsSnapshot即可,代码:



复制代码
       最后输出结果为:



复制代码
       OK,到此关于Picasso的高级用法我们都有了一定得了解,后面我们将介绍Picasso.Builder来改变Picasso的实例,愿大家都有一个美好的一天.


作者: baby14    时间: 2018-11-23 07:59
多谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2