圆点旋转 loading
先上图
先讲讲主要思想
将第一个点作为每次都必须交换坐标的点,第一次时他的index为0,每次旋转过后,旋转的两个点交换index,当第一个点的index为点集合的size() - 1时,让这个点与当前index为0的点交换位置,即图中最大的那一次旋转。
再讲讲逻辑
每个圆点都有一个x,y和当前所在位置index(不是在集合中的位置,是四个点从左到右的排序);通过一个自定义的TypeEvaluator来获取变化的角度,然后来计算当前的x,y,然后通过invalidate()重绘。
主要代码
1、得到变化的角度
/**
* 自定义的TypeEvaluator
*/
class CircleTypeEvaluator implements TypeEvaluator{
/**
* 角度从π到0,
* @param fraction 变化率
* @param startValue π
* @param endValue 0
* @return 当前变化率的情况下,所要旋转的角度
*/
@Override
public Object evaluate(float fraction, Object startValue, Object endValue) {
double angle = (double) startValue - fraction * ( (