话不多说先上效果图:
测试设备:
oppo find7 2G RAM 1920*1080 。
实现思路:
具体绘制前 ,先将底部的圆环和圆环中心的文字信息用canvas绘制出来保存在bitmap上,接着再通过传入的数据,动态计算圆弧的弧度及指示文字关键点的坐标。其实最开始的想法是绘制两段圆弧,但是后面发现两段圆弧实现动画和预期的不太一样,所以更换了一下实现的方式。
大家应该都知道16ms的传说,虽然现在这个标准已经有了变化,但是核心思想依然没有变。这个组件再加上动画之后要想流畅的跑起来不掉帧不卡顿,主要的点在于:①提前做好关键控制点的坐标计算工作,最大程度的减轻绘制时的计算压力②选择合理的属性用来作为动画的控制点,同时处理好动画之前的衔接处理。在最终效果就是这台15年的设备跑这个组件依然十分的流畅,虽然视频转gif的过程中丢失了部分的帧,但是具体的动画细节依然能很清晰的看到。项目中我是在列表中使用,滑动时没有动画卡顿的情况出现。