Android图片加载

来源:互联网 发布:杭州亿购网络 编辑:程序博客网 时间:2024/05/22 05:28

最近整理一下Android ,将一些常用的东西记录下来


1. Android 图片缓存 - Fresco

GitHub: https://github.com/facebook/fresco

特点:

  • 两个内存缓存加上磁盘缓存构成了三级缓存
  • 支持流式,可以类似网页上模糊渐进式显示图片
  • 对多帧动画图片支持更好,如 Gif、WebP
  • 更多样的显示,如圆角、进度条、点击重试、自定义对焦点
  • 更多样的加载,如支持 EXIF、全面支持 WebP
  • 支持 Android 2.3+

    2.

Android 图片缓存 - Fresco

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

picasso使用简单,如下

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);  

主要有以下一些特性:

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

     3. Android 图片缓存 -

Android-Universal-Image-Loader

      Android-Universal-Image-Loader是一个图片异步加载,缓存和显示的框架。这个框架已经被很多开发者所使用,是最常用的几个Android开源项目之一,主流的应用,随便反编译几个,都可以见到它的身影。淘宝,天猫,Facebook,京东商城等都用到了这个项目。

该项目的Github地址链接: https://github.com/nostra13/Android-Universal-Image-Loader

运行流程:

每一个图片的加载和显示任务都运行在独立的线程中,除非这个图片缓存在内存中,这种情况下图片会立即显示。如果需要的图片缓存在本地,它会开启一个独立的线程队列。如果在缓存中没有正确的图片,任务线程会从网络中获取。

使用步骤:

1、加载图片之前,先要做初始化配置,这个类似很多游戏引擎使用前要做一下初始化,其实只做了一件事,实例化一个全局的ImageLoader对象,同时传入图片加载缓存的配置,ImageLoaderConfiguration封装了基本的配置信息,比如加载图片事用的线程池大小,线程的优先级,内存缓存大小,是否支持同一图片的多尺寸缓存(默认是支持的,可以手动关闭),还有缓存的命名规则等等。

2、配置完后,就可以开始使用了,通过ImageLoader的displayImage()绑定一个图片和ImageView。

displayImage(String uri, ImageView imageView, DisplayImageOptions options)

DisplayImageOptions用于指导每一个Imageloader根据网络图片的状态(空白、下载错误、正在下载)显示对应的图片,是否将缓存加载到磁盘上,下载完后对图片进行怎么样的处理。


0 0