写在前面
本意是想把做过的东西沉淀一下,防止重复造轮子。后来想想自己在实现这个的过程中还是走了一点弯路的。虽然网上找的轮子很多,其实大多都华而不实或者功能太多,工作中实现的东西最重要的不是功能炫,而是稳定,一旦需求变更或者出了BUG要负责维护,过多的功能会在后期维护的时候造成很大困扰,使用者需要review整个控件的逻辑才能去修改一个小点,因此封装好了一份最简单功能的红点控件开源出来,在一些关键点都写了注释,方便使用者后期DIY。
实现效果
实现功能点
以下实现功能点都有API直接设置
- 修改红点颜色
- 修改显示字体大小
- 修改字体颜色
- 显示最大字数(超过最大字数会从圆形变成圆角矩形)
- 显示红点,文字,圆角矩形
- 消失
未实现功能点
- 根据字体大小或者长度自动适配圆角矩形长度
- 根据xml配置各种属性
- 不支持wrap_content
- 当形状为矩形时,红点出现的位置(现在默认出现在左侧)不能改变
实现思路
重写onDraw方法,调用canvas进行绘制,其余都是一些绘制逻辑,注释中都有写。