Android项目重构实践:从 Fresco 到 Glide 低成本重构方案

本文介绍了在Android项目中从Fresco迁移到Glide的实践经验,由于Fresco的包体积大、易出现布局错误和强侵入性,项目决定采用自定义控件的方式降低替换成本。通过创建与SimpleDraweeView类似功能的ImageViewEx和SimpleDraweeView(包名和属性与Fresco一致),实现了低成本的迁移。同时,强调了替换后的组件需深度测试以确保无误。
摘要由CSDN通过智能技术生成

Fresco 是一个入侵性很重的框架,如果使用 Fresco 我们的ImageView都要替换为 SimpleDraweeView,如果使用自定义ImageView,就非常麻烦。虽然 SimpleDraweeView 提供了非常丰富的功能,比如圆角,边框等,但有时候会出现非常奇怪的布局异常。在5.0版本以前 Fresco 可以有效降低 OOM,但是现在已经没有优势了,所以项目计划从 Fresco 替换为 Glide。

Fresco 缺点

  1. 包太大。
  2. 容易出现未知布局错误。
  3. 入侵性太强,必须使用Fresco的View控件。

替换分析

由于项目中大量使用了SimpleDraweeView来实现布局,而且SimpleDraweeView提供了丰富的圆角、圆形、边框等。修改整个项目的布局代码也不现实,所以我们需要创一个包名、属性名称和SimpleDraweeView都一样的View,提供相同的功能,这样就可以大大降低替换成本。但是这个SimpleDraweeView不是全功能的,因为完全模仿成本太高,所以我们需要去掉 setImageRequest(ImageRequest request)和 getControllerBuilder() 这些调用方法,只提供通用的调用方法和属性。

自定义替换控件

api 'com.taoweiji:SimpleDraweeView:0.9.5'

自定义 RoundedCornerDrawable

我们实际上可以直接在ImageView.onDraw的方法中绘制图片,但是通过自定义 Drawable 可以让组件可控性更好,也可以复用。由于绘制比较复杂,这里就不一一介绍&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值