Android图片框架fresco

###为什么要用fresco:

####1.图片优化做的更好:

在前段时间开发项目时偶然用了下,原来项目用的是glide,然而在对比了下才发现使用glide打开个首页内存就占用了90多M,而用fresco替换了后再打开首页内存仅仅占用了60多M。当时没截图有点可惜了,不过在测试项目中使用的对比可以看下:
使用glide加载的大图

使用fresco加载的大图

可以看出在加载同一张大图时fresco占用的内存明显比glide少了10M,可以想象一张图片减少占用10M那多张图片少占用多少内存,而且cpu占用也少了2%左右。

####2.支持webp格式图片:
9k的原图

700b的webp格式tu

可以看出上面两张图片视觉上基本上没太大的区别,但是一张是原图9k的,一张是webp格式的图片仅有700b左右的大小,所以说webp格式的图片是非常有优势的在app性能优化上建议使用,而且apk体积也会变小。另外的一张原图是80多k的,在转成webp格式的后仅有30多k,因此webp图片应该会是后面的一个趋势。

###可以实现的效果:
####1.圆角:
布局中实现(当然外部边框可以不设置的)

<com.facebook.drawee.view.SimpleDraweeView
   ...
   fresco:roundedCornerRadius="5dp"
   fresco:roundBottomLeft="false"
   fresco:roundBottomRight="false"
   fresco:roundWithOverlayColor="@color/blue"
   fresco:roundingBorderWidth="1dp"
   fresco:roundingBorderColor="@color/red"/>

代码中实现(可以设置四个角不同半径):

RoundingParams roundingParams = RoundingParams.fromCornersRadius(5f);
roundingParams.setBorder(R.color.red, 1.0);
roundingParams.setRoundAsCircle(true);
mSimpleDraweeView.getHierarchy().setRoundingParams(roundingParams);

####2.圆圈图片:
xml配置

设置roundAsCircle为true即可

####3.宽高比图片:
xml配置

fresco:viewAspectRatio="1.33"

代码中设置

mSimpleDraweeView.setAspectRatio(1.33f);

####4.加载gif动图:

public static void setSupportGif(SimpleDraweeView draweeView,String url){

        PipelineDraweeController controller =(PipelineDraweeController) Fresco.newDraweeControllerBuilder()
                        .setUri(url)
                        .setOldController(draweeView.getController())
                        .setAutoPlayAnimations(true) //自动播放gif动画
                        .build();
        draweeView.setController(controller);
    }

####说说我在使用时的坑吧:
首先在加载大图时一般跳过内存缓存(大图占用的内存一般比较大,缓存在磁盘中就好了);

重写activity的onTrimMemory方法,在低内存时清空下fresco的缓存,可以避免在后台时被系统回收进程的概率;

在列表滑动时暂停加载(暂停加载调用pause(),重新加载调用resume());

把app及后台一些很大的图片先用tinypng无损压缩下然后转成webp格式的图片,一个是占内存小,另一个是加载更快,还有比较省流量。

引入:

// fresco
    compile 'com.facebook.fresco:fresco:1.9.0'
    // 在 API < 14 上的机器支持 WebP 时,需要添加
//    compile 'com.facebook.fresco:animated-base-support:1.9.0'
    // 支持 GIF 动图,需要添加
//    compile 'com.facebook.fresco:animated-gif:1.9.0'
    // 支持 WebP (静态图+动图),需要添加
//    compile 'com.facebook.fresco:animated-webp:1.9.0'
//    compile 'com.facebook.fresco:webpsupport:1.9.0'
    // 仅支持 WebP 静态图,需要添加
    compile 'com.facebook.fresco:webpsupport:1.9.0'

我只用了webp的支持所以只引入第一个跟最后一个就好了。

fresco官网:https://www.fresco-cn.org/docs/drawee-branches.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值