小红点功能控件

689 阅读1分钟

写在前面

本意是想把做过的东西沉淀一下,防止重复造轮子。后来想想自己在实现这个的过程中还是走了一点弯路的。虽然网上找的轮子很多,其实大多都华而不实或者功能太多,工作中实现的东西最重要的不是功能炫,而是稳定,一旦需求变更或者出了BUG要负责维护,过多的功能会在后期维护的时候造成很大困扰,使用者需要review整个控件的逻辑才能去修改一个小点,因此封装好了一份最简单功能的红点控件开源出来,在一些关键点都写了注释,方便使用者后期DIY。

实现效果

实现功能点

以下实现功能点都有API直接设置

  • 修改红点颜色
  • 修改显示字体大小
  • 修改字体颜色
  • 显示最大字数(超过最大字数会从圆形变成圆角矩形)
  • 显示红点,文字,圆角矩形
  • 消失

未实现功能点

  • 根据字体大小或者长度自动适配圆角矩形长度
  • 根据xml配置各种属性
  • 不支持wrap_content
  • 当形状为矩形时,红点出现的位置(现在默认出现在左侧)不能改变

实现思路

重写onDraw方法,调用canvas进行绘制,其余都是一些绘制逻辑,注释中都有写。

下载地址

github.com/yuwang00/Al…