Android图片加载利器之Picasso扩展功能

所属分类: 软件编程 / Android 阅读数: 26
收藏 0 赞 0 分享

这篇文章中我们来继续学习Picasso中还提供了哪些扩展功能,一个好的框架一定是扩展性强的,你需要的我刚好有。

下面看一下都提供了哪些扩展功能呢?

Picasso内部采用了建造者模式,所以我们只看Builder内部类都提供了哪些方法即可

1 defaultBitmapConfig(Bitmap.Config bitmapConfig)

设置像素格式,Picasso的默认格式为ARGB_8888,我们知道采用这个值一个像素占用4个字节,可以使用RGB_565来替换,这样可以节省一半的内存开销,当然图片质量还是有一定损失的。

2 downloader(Downloader downloader)

自定义下载器,默认OkHttp,具体的实现类是OkHttpDownloader

3 executor(ExecutorService executorService)

线程池,默认的实现是PicassoExecutorService, 这里面会根据不同的网络情况来设置核心线程和最大线程数,最大为4,最小为1,默认为3.

4 memoryCache(Cache memoryCache)

缓存策略,默认实现为LruCache,LRU(最近最少未使用算法)目前在内存缓存这块使用的还是非常广泛的。

5 listener(Listener listener)

图片加载失败的一个回调事件,回调方法为onImageLoadFailed(Picasso picasso, Uri uri, Exception exception)

6 requestTransformer(RequestTransformer transformer)

请求的转换,在request被提交之前进行转换

7 addRequestHandler(RequestHandler requestHandler)

自定义加载图片的来源,默认为我们实现了7个,分别如下:

ResourceRequestHandler
ContactsPhotoRequestHandler
MediaStoreRequestHandler
ContentStreamRequestHandler
AssetRequestHandler
FileRequestHandler
NetworkRequestHandler

以上方法的调用方式如下

Picasso picasso = new Picasso.Builder(this)
    .defaultBitmapConfig(Bitmap.Config.RGB_565)
    .downloader(downloader)
    .executor(executotService)
    .memoryCache(cache)
    .listener(new Picasso.Listener() {
      @Override
      public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) {

      }
    })
    .requestTransformer(new Picasso.RequestTransformer() {
      @Override
      public Request transformRequest(Request request) {
        return null;
      }
    })
    .addRequestHandler(requestHandler)
    .build();
Picasso.setSingletonInstance(picasso);
picasso.load(imageUrl).into(imageView);

在RequestCreator中也有几个可以自定义的方法,上篇博客中未涉及到,这里统一列出来

1 config(Bitmap.Config config)

同上面的defaultBitmapConfig(Bitmap.Config bitmapConfig)效果完全一样,两种方式都可以设置,defaultBitmapConfig(Bitmap.Config.RGB_565)倾向于全局设置,而config(Bitmap.Config.RGB_565)只对单次请求生效

2 transform(Transformation transformation)

图片转换,一般我们得到图片之后,在显示之前还可以进一步转换,比如进行一些色彩处理,改变形状等等。

以上方法的调用方式如下

Picasso.with(this)
    .load(imageUrl)
    .config(Bitmap.Config.RGB_565)
    .transform(transform)
    .into(imageView);


好了,到这里Picasso的功能基本介绍完了,接下来我们将从源码的角度去学习内部的实现。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

老生常谈Android HapticFeedback(震动反馈)

下面小编就为大家带来一篇老生常谈Android HapticFeedback(震动反馈)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详谈OnTouchListener与OnGestureListener的区别

下面小编就为大家带来一篇详谈OnTouchListener与OnGestureListener的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android仿知乎悬浮功能按钮FloatingActionButton效果

前段时间在看属性动画,恰巧这个按钮的效果可以用属性动画实现,下面通过本文给大家分享adroid仿知乎悬浮功能按钮FloatingActionButton效果,需要的朋友参考下吧
收藏 0 赞 0 分享

解决Android V7后自定义Toolbar、ActionBar左侧有空白问题

这篇文章主要介绍的Android V7后自定义Toolbar、ActionBar左侧有空白问题的解决方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Android常见控件使用详解

这篇文章主要为大家详细介绍了Android常见控件的使用方法,包括ProgressBar进度条控件、AlertDialog对话框控件等,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android实现简洁的APP更新dialog数字进度条

这篇文章主要为大家详细介绍了Android实现简洁的APP更新dialog数字进度条,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android 判断当前语言环境是否是中文环境

本文主要介绍了Android 判断当前语言环境是否是中文环境的方法。具有很好的参考价值。下面跟着小编一起来看下吧
收藏 0 赞 0 分享

详谈Android中Matrix的set、pre、post的区别

下面小编就为大家带来一篇详谈Android中Matrix的set、pre、post的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android实现登录界面记住密码的存储

这篇文章主要为大家详细介绍了Android SharedPreferrences实现登录界面记住密码的存储,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android 使用SharedPreferrences储存密码登录界面记住密码功能

Android存储方式有很多种,在这里所用的存储方式是SharedPreferrences, 其采用了Map数据结构来存储数据,以键值的方式存储,可以简单的读取与写入,下面通过实例代码给大家讲解下,需要的朋友参考下吧
收藏 0 赞 0 分享
查看更多