1.Android-Universal-Image-Loader

giehub地址::https://github.com/nostra13/Android-Universal-Image-Loader

这个框架是我最早使用的一款老牌框架,至今仍有许多开发者在用,不过该项目已经不再继续维护了,所以在此不推荐使用

使用方法:在自定义的application里进行配置,可参考以下代码:

       //创建默认的ImageLoader配置参数ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this).memoryCacheExtraOptions(600, 600)// max width, max height,即保存的每个缓存文件的最大长宽.threadPoolSize(3)// 线程池内加载的数量.threadPriority(Thread.NORM_PRIORITY - 2).denyCacheImageMultipleSizesInMemory().memoryCache(new WeakMemoryCache()) // 弱缓存,缓存bitmap的总大小没有限制,唯一不足的地方就是不稳定,缓存的图片容易被回收掉
//                .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))//建议内存设在5-10M,可以有比较好的表现// You can pass your own memory cache// implementation/你可以通过自己的内存缓存实现.memoryCacheSize(2 * 1024 * 1024).discCacheSize(50 * 1024 * 1024).discCacheFileNameGenerator(new Md5FileNameGenerator())// 将保存的时候的URI名称用MD5 加密.tasksProcessingOrder(QueueProcessingType.LIFO).discCacheFileCount(100)// 缓存的文件数量.discCache(new UnlimitedDiscCache(new File(Environment.getExternalStorageDirectory()+ "/Westwinglife/imgCache")))// 自定义缓存路径.defaultDisplayImageOptions(getDisplayOptions()).imageDownloader(new BaseImageDownloader(this, 5 * 1000, 30 * 1000)).writeDebugLogs() // Remove for release app.build();// 开始构建ImageLoader.getInstance().init(config);

options的配置可全局配置,也可对具体加载项单独配置,具体代码可参考:

    public DisplayImageOptions getDisplayOptions() {DisplayImageOptions options;options = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.defult_good_img) // 设置图片在下载期间显示的图片.showImageForEmptyUri(R.drawable.defult_good_img)// 设置图片Uri为空或是错误的时候显示的图片.showImageOnFail(R.drawable.defult_good_img) // 设置图片加载/解码过程中错误时候显示的图片.cacheInMemory(true)// 设置下载的图片是否缓存在内存中.cacheOnDisc(true)// 设置下载的图片是否缓存在SD卡中.considerExifParams(true) // 是否考虑JPEG图像EXIF参数(旋转,翻转).imageScaleType(ImageScaleType.IN_SAMPLE_INT)// 设置图片以如何的编码方式显示
//                .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)// 设置图片以如何的编码方式显示.bitmapConfig(Bitmap.Config.RGB_565)// 设置图片的解码类型//// .delayBeforeLoading(int delayInMillis)//int// delayInMillis为你设置的下载前的延迟时间// 设置图片加入缓存前,对bitmap进行设置// .preProcessor(BitmapProcessor preProcessor).resetViewBeforeLoading(true)// 设置图片在下载前是否重置,复位.displayer(new RoundedBitmapDisplayer(20))// 是否设置为圆角,弧度为多少.displayer(new FadeInBitmapDisplayer(100)) // 是否图片加载好后渐入的动画时间.build();// 构建完成return options;}

这样配置完成之后就可以在项目中使用了, imageLoader.displayImage方法简单易用,第一次使用的时候感觉非常棒,单例模式,三级缓存,各种状态 图片的配置显示.配置好的话还可以避免很多oom的问题

2.Picasso
giehub地址:https://github.com/square/picasso
picasso是Square公司开源的一个Android图形缓存库,可以实现图片下载和缓存功能。仅仅只需要一行代码就能完全实
现图片的异步加载:
dependencies {  compile 'com.squareup.picasso:picasso:2.5.1'
} 

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

这也是一款老牌的图片加载库,不过和UIL生在同一时期光芒必定会被有所遮盖,不过随着UIL的停止维护,Picasso的
光芒也将绽放
3.Glide
giehub地址:https://github.com/bumptech/glide
在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech。这个库被广泛的运用在google的开源项目中,
包括2014年google I/O大会上发布的官方app。这是一款比较流行的图片加载框架,傻瓜式的集成和使用吸引了大量的开发者,而且它的内存优化和
加载速度也是非常给力的,Glide 默认的 Bitmap 格式是 RGB_565 格式,相较于Picasso的ARGB_8888的格式,内存开销减少一半,
最重要的一个特性是 Glide 支持加载 Gif 动态图,而 Picasso 不支持该特性。
dependencies {  compile 'com.github.bumptech.glide:glide:3.5.2'  compile 'com.android.support:support-v4:22.0.0'
} 
Glide.with(context)  .load("http://inthecheesefactory.com/uploads/source/glidepicasso/cover.jpg")  .into(ivImg);  
4.Fresco

giehub地址:https://github.com/facebook/fresco

Fresco 是 Facebook 出品,他是新一代的图片加载库,我们知道 Android 应用程序可用的内存有限,经常会因为图片加载导
致 OOM,虽然我们有各种手段去优化,尽量减少出现 OOM 的可能性,但是永远没法避免,尤其某些低端手机 OOM 更是严重。
而 Facebook 就另辟蹊径,既然没法在 Java 层处理,我们就在更底层的 Native 堆做手脚。于是 Fresco 将图片放到一个特别的
内存区域叫 Ashmem 区,就是属于 Native 堆,图片将不再占用 App 的内存,Java 层对此无能为力,这里是属于 C++ 的地盘,
所以能大大的减少 OOM。后期的这些图片加载框架的集成和使用都是越来越简单方便,Fresco的集成和使用和glide差不多.
不能说越新的框架越好,但至少趋势是这样,Fresco库比较大,比较适合含有大量图片的APP去使用,实乃加载大图之必备良品,而一般的
应用使用Picasso或者glide完全可以搞定
这里推荐Fresco的中文网,里面可以满足你几乎所有的需求:https://www.fresco-cn.org/docs/index.html
写这篇博客的目的仅作工作记录,留以后查看

android图片加载库的使用对比相关推荐

  1. fackbook的Fresco (FaceBook推出的Android图片加载库-Fresco)

    [Android开发经验]FaceBook推出的Android图片加载库-Fresco 欢迎关注ndroid-tech-frontier开源项目,定期翻译国外Android优质的技术.开源库.软件架构 ...

  2. Android常用图片加载库介绍及对比

    前言 图片加载在 Android开发项目中是必不可少的,为了降低开发周期和难度,我们经常会选用一些图片加载的开源库,而Android发展到现在图片加载开源库也越来越多了,下面介绍几种开发中主流的图片加 ...

  3. android 图片加载库 Glide 的使用介绍

    一:简介 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech.这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会 ...

  4. android图片加载库Glide

    什么是Glide? Glide是一个加载图片的库,作者是bumptech,它是在泰国举行的google 开发者论坛上google为我们介绍的,这个库被广泛的运用在google的开源项目中. Glide ...

  5. Android图片加载库:最全面解析Glide用法

    目录 1. 简介 介绍:Glide,是Android中一个图片加载开源库 Google的开源项目 主要作用:实现图片加载 2. 功能特点 2.1 功能列表 从上面可以看出,Glide不仅实现了图片异步 ...

  6. Android图片加载库的封装实战

    重磅更新 2017-02-16 2017-05-09 优化圆形图片加载 更新demo 前言 主流图片加载库的对比 Android-Universal-Image-Loader Picasso Glid ...

  7. 谷歌推荐的Android图片加载库(Glide)介绍

    本文出自:http://blog.csdn.net/u011733020 原      文:https://inthecheesefactory.com/blog/get-to-know-glide- ...

  8. Android图片加载库—Picasso一个强大的图像下载和缓存库

    介绍 GitHub源码 点击查看 Picasso是一款强大的图片下载和缓存开源软件,只能在Android平台上使用,由Square开发.使用Picasso可以添加一些必须的特性和视觉效果到Androi ...

  9. FaceBook推出的Android图片加载库-Fresco

    源文件:http://www.mamicode.com/info-detail-544084.html 在Android设备上面,快速高效的显示图片是极为重要的.过去的几年里,我们在如何高效的存储图像 ...

最新文章

  1. 物联网11种通信协议
  2. Jvm(4),保持线程可见性的几种方法
  3. [JS]视频总结-第三部分_深入javascript
  4. python get请求 url传参_用Python-get方法向页面发起请求,参数传不进去是怎么回事...
  5. hive开启kerberos-beeline连接
  6. 业务流程图6个图例_系统流程图用什么软件做?流程图绘制全教程
  7. linux上chrome、vlc等程序root不能运行的解决办法
  8. 数学建模1:lingo软件求解优化模型
  9. mike21换成计算机名称,MIKE 21
  10. 2022高压电工操作证考试题库及模拟考试
  11. 贴片电阻、贴片电容规格、封装、尺寸
  12. 基本遗传算法(GA)详解
  13. 一代人终将老去,但总有人正年轻
  14. 苹果手机如何找回id密码_苹果手机丢失24天后成功找回
  15. backdrop-filter,让你的网站熠熠生”毛’
  16. DDL和DML的含义与区别
  17. 三分之一的程序猿之创业组队与打怪升级
  18. linux关闭cups服务 关闭631端口 关闭avahi-daemon服务
  19. hive启动失败 显示:Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time
  20. 安卓期末大作业——汉服社区(源码+任务书)

热门文章

  1. vue-element-ui的各种弹出框样式修改
  2. 如何将matlab数据行列互换,excel中散点图如何切换行列?:excel中列怎么互换
  3. 百无聊赖之JavaEE从入门到放弃(十)抽象方法_抽象类 接口
  4. C语言基础知识之分支结构
  5. mysql查询所有男生中姓王的_查询全体学生的姓名及其出生年份 (数据库)
  6. Unity学习——InstantOC
  7. (无报错)Java截取视频生成Gif动图 视频转gif动态图 视频截帧取图 java实现方式
  8. 利用android手机摄像头智能测量物体距离,高度
  9. 20个热门在线少儿编程网站【2019】
  10. python 程序化交易信号闪烁_程序化交易模型在回测时的偷价行为和信号闪烁问题...