重写 T evaluate(float fraction, T startValue, T endValue)方法。根据一定的条件返回不同的值。
class CustomEvaluator implements TypeEvaluator<Number> {
@Override
public Number evaluate(float fraction, Number startValue, Number endValue) {
return null;
}
}
重新实现上面的例子
创建圆点实体类
/**
* 圆形的实体类
*/
public class Cicle {
//圆点x坐标
private float xCenter;
//圆点y坐标
private float yCenter;
//半径
private float radius;
public Cicle() {
}
public Cicle(float xCenter, float yCenter, float radius) {
this.xCenter = xCenter;
this.yCenter = yCenter;
this.radius = radius;
}
public float getxCenter() {
return xCenter;
}
public void setxCenter(float xCenter) {
this.xCenter = xCenter;
}
public float getyCenter() {
return yCenter;
}
public void setyCenter(float yCenter) {
this.yCenter = yCenter;
}
public float getRadius() {
return radius;
}
public void setRadius(float radius) {
this.radius = radius;
}
}
自定义View 绘制圆形
public class CicleView extends View {
private Paint paint;
private Cicle cicle;
public CicleView(Context context) {
super(context);
init();
}
public CicleView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init();
}
public CicleView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
public void setCicle(Cicle cicle) {
this.cicle = cicle;
invalidate();
}
private void init() {
paint = new Paint();
paint.setColor(Color.BLUE);
paint.setAntiAlias(true);
paint.setMaskFilter(new BlurMaskFilter(2f, BlurMaskFilter.Blur.NORMAL));
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
cicle.setxCenter(width / 2);
cicle.setyCenter(height / 2);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(cicle.getxCenter(), cicle.getyCenter(), cicle.getRadius(), paint);
}
}