关于Fresco图片加载库的使用优化

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容