Android图片加载框架:ImageLoader,Volley,Picasso,Glide,Fresco

原创 2015年11月20日 18:32:36

1.ImageLoader

2.Volley

3.picasso

4.glide

5.fresco

首先:以前自己一直是使用ImageLoader的,,ImageLoader大家都是知道的,使用最广泛,使用方式也是最灵活的,,但后续出现了很多图片加载框架,自己也没去体验, 有一天,当ImageLoader无法满足,或者看到别人的项目框架图片加载比自己更佳流畅的时候,,发现,自己该学习新知识了,第一次发博客,写的很乱

Universal Image Loader:一个强大的图片加载库,包含各种各样的配置,最老牌,使用也最广泛。
Picasso: Square出品,必属精品。和OkHttp搭配起来更配呦!
Volley ImageLoader:Google官方出品,可惜不能加载本地图片~
Fresco:Facebook出的,天生骄傲!不是一般的强大。
Glide:Google推荐的图片加载库,专注于流畅的滚动。

1.volley-imageloader
基于volley的 图片框架,使用需要自己配置,因为volley自身是不带图片加载的 配置,有时间补上

2.picasso 是square公司开源的一个Android图形缓存库使用也非常简单

    使用方式:

        (1) 导入外部库 compile 'com.squareup.picasso:picasso:2.5.2'
        (2)  Picasso.with(context).load("加载地址").placeholder("加载前显示的图片").error("错误显示的图片").centerCrop("类型吧").resize("大小").into("要显示的Image");

     优点:

        (1)在adapter中需要取消已经不在视野范围的ImageView图片资源的加载,否则会导致图片错位,Picasso已经解决了这个问题。
        (2)使用复杂的图片压缩转换来尽可能的减少内存消耗
        (3)自带内存和硬盘二级缓存功能
    部分解决方案:[解决方案](http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0731/1639.html)

3.glide 像是picasso的高仿版,使用方式 一模一样几乎,,但个人推荐使用glide,自我测试,内存消耗极小,加载速度快于picasso ,更适合使用在滑动listview 里面的图片,google推荐的,,现在做的小应用都是用了glide

        使用方式:
        (1)导入外部库 compile 'com.github.bumptech.glide:glide:3.6.1'
        (2)Glide.with(mContext).load(url).placeholder(R.drawable.loading_spinner)
    .crossFade().into(myImageView);//crossFade()渐现效果
        部分解决方案:[解决Listview里面image无法设置set, 或者返回drawbler返回自己设置一些效果等](http://www.wtoutiao.com/p/z53DE5.html)

4.fresco 自从不用ImageLoader后,就是用了fresco fresco是facebook推出的一款强大的android图片处理库, 太强大了 唯一的缺点就是太大了,使用后app至少曾不到2M,,不适合小应用使用

    使用方式 :
    1.导入外部库      compile 'com.facebook.fresco:fresco:0.6.0'   //0.8.0
    2.Application初始化       Fresco.initialize(this);//强大的图片加载框架
    3.开始使用:   

    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/find_head_img"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_marginRight="@dimen/padding_size"
        fresco:failureImage="@drawable/user_head_img"
        fresco:placeholderImage="@drawable/user_head_img" />
针对  fresco 自己封装了几个小工具 

/**
 * 普通显示
 * */
public static void showFescoBitmap(SimpleDraweeView drawee,String url){

    //方法二
    ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(url))
            .setAutoRotateEnabled(true)//自动旋转
            .setProgressiveRenderingEnabled(false)//是否支持渐进式加载
            .build();
    DraweeController draweeController= Fresco.newDraweeControllerBuilder()
            .setImageRequest(request)
            .setOldController(drawee.getController())//可节省不必要的内存
            .setAutoPlayAnimations(true)
            .build();
    drawee.setController(draweeController);


}

/**
 * 普通显示
 * */
public static void showFescoBitmap2(Context context,SimpleDraweeView drawee,String url,int drawId){

    ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(url))
            .setAutoRotateEnabled(true)//自动旋转
            .setProgressiveRenderingEnabled(false)//是否支持渐进式加载
            .build();
    DraweeController draweeController= Fresco.newDraweeControllerBuilder()
            .setTapToRetryEnabled(true)//加载失败时,会重试4次
            .setImageRequest(request)
            .setAutoPlayAnimations(true)
            .build();
    GenericDraweeHierarchyBuilder builder =//用来设置加载失败,加载中,加载前图片,等效果
            new GenericDraweeHierarchyBuilder(context.getResources());
    GenericDraweeHierarchy hierarchy = builder
            .setFadeDuration(300)
            .setPlaceholderImage(context.getResources().getDrawable(drawId))
            .setFailureImage(context.getResources().getDrawable(drawId))
    //      .setOverlays(overlaysList)
            .build();
    drawee.setHierarchy(hierarchy);
    drawee.setController(draweeController);

}

/**
 * 显示圆角
 * */
public static void showFescoRoundBitmap(SimpleDraweeView draweeView,String url){
    DraweeController draweeController2 = Fresco.newDraweeControllerBuilder().setUri(Uri.parse(url)).setAutoPlayAnimations(true).build();
    draweeView.setController(draweeController2);
    RoundingParams mRoundParams2 = RoundingParams.fromCornersRadius(7f);
    mRoundParams2.setRoundAsCircle(true);//圆圈 - 设置roundAsCircle为true
    mRoundParams2.setBorder(Color.parseColor("#ffffff"),3);//显示边框的颜色
    //mRoundParams2.setOverlayColor(Color.parseColor("#ffffff"));//用来绘制非圆角颜色
    draweeView.getHierarchy().setRoundingParams(mRoundParams2);

}




/**
 * 解决图片缩放
 * */
public static void showFescoScrolBitmap(SimpleDraweeView draweeView,String url,int width,int height){
    ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(url))
            .setResizeOptions(new ResizeOptions(width, height))
            .build();
    PipelineDraweeController controller = (PipelineDraweeController) Fresco.newDraweeControllerBuilder()
            .setOldController(draweeView.getController())
            .setImageRequest(request)
            .build();
    draweeView.setController(controller);
}

相关文章推荐

Picasso, ImageLoader, Fresco, Glide 优劣

Picasso, ImageLoader, Fresco, Glide 优劣 首先看 Fresco, 它的优点是其他几个框架没有的, 或者说是其他几个框架的短板. Fresco: 优点: 1. ...

universalImageLoader,picasso,glide,fresco图片选择库选择分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[+] universalImageLoader Picasso Fresco 特性 Glide测试 ...

图片加载框架的选择问题(Fresco,Glide,Picasso,UIL)

确实这四个都非常强大,且大部分帖子文档都对这些框架有很深入的介绍。所以今天来讲一点不一样的。 首先,说说需求。需求有两点,一是列表icon。二是点击列表进入详情后展示详情图片,如下图: ...
  • AIR_GRU
  • AIR_GRU
  • 2017年05月02日 14:47
  • 435

图片加载框架Glide,Picasso fresco volley imageloader Universal Image Loader的比较

glide(底层):HttpUrlConnection Glide的网络请求部分可以使用当前最流行的网络请求框架Volley或OkHttp,也可以通过Glide的ModelLoader接口自己写网络...

Android四大图片缓存(Imageloader,Picasso,Glide,Fresco)原理、特性对比

http://www.cnblogs.com/linghu-java/p/5741358.html

图片加载三方库ImageLoader,Fresco,Picasso,Glide

1.图像_UIL 主页: https://github.com/nostra13/Android-Universal-Image-Loader 使用步骤:添加依赖: compile ‘com.nost...

Android图片加载与缓存开源框架总结七部曲:Glide Picasso ImageLoader Fresco ASimpleCache等

ImageLoader其实也不难,下面来看看代码: 下载地址: http://download.csdn.net/detail/wwj_748/5975847 http://download.c...

主流图片加载框架ImageLoader、Glide、Picasso、Fresco性能分析---图片加载速度比较

图片加载这种实现繁琐,可复用性又极强的东西最好是使用图片加载框架来实现。 到Github上面搜索下,关键词Android ImageLoad,ImageLoader、Glide、Picasso、Fr...

Android 四大大图片缓存(Imageloader,Picasso,Glide,Fresco)原理、特性对比

四大图片缓存基本信息 Universal ImageLoader 是很早开源的图片缓存,在早期被很多应用使用。   Picasso 是 Square 开源的项目,且他的主导者是 JakeWh...

网络图片加载(Universal_Image_Loader,Volley)

当我们的ImageView是加载网络的图片是
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android图片加载框架:ImageLoader,Volley,Picasso,Glide,Fresco
举报原因:
原因补充:

(最多只允许输入30个字)