Fresco是一个出自Facebook的功能强大的图片加载库
Fresco简单的使用—SimpleDraweeView
工欲善其事必先利其器—下载Fresco并导入到项目
Fresco中文说明:http://www.fresco-cn.org/
Fresco项目GitHub地址:https://github.com/facebook/fresco
优点:
1)内存自动回收。图片不可见时,会及时自动释放所占用的内存,尽可能地避免OOM
2)三级缓存机制。两级内存缓存(解码的与未解码的)+一级磁盘缓存,提升加载速度,节省内存占用空间
3)支持各种加载场景。如动图加载、高斯模糊等常见的图片加载场景。另外还提供了独特的渐进式加载、先加载小图再加载大图,加载进度等功能(很强大)。
缺点:
1)体积大(很胖)。较其他主流图片库体积要大不少
2)侵入性较强。须使用它提供的SimpleDraweeView来代替ImageView加载显示图片
综合来说,如果你的应用对图片的显示、加载等要求高的话,那就建议使用Fresco。但如果要求没那么高的话就用Glide或其它库吧。关于Fresco与Glide的对比可以参考http://www.jianshu.com/p/6729dc17586b
使用方法,直接上代码,在xml文件里面,宽高不能设置wrap_content,否则显示不出来,这点我也觉得很麻烦啊,里面的属性有设置圆角,设置图片形状,放置占位图,加载失败的的默认图等,属性名就能看出来
代码中
DraweeController draweeController =Fresco.newDraweeControllerBuilder().setUri(picUrl)
.setTapToRetryEnabled(false).setOldController(imgView.getController()).build();
imgView.setController(draweeController);
imgView.setTag(position);
要特别说一下这个属性setTapToRetryEnabled(false),设置为true的话,图片在没加载出来的时候会自己尝试重新加载,但是这个问题会影响图片的点击事件,重试的时候点击事件会不执行,所以最好设置为false