Círculo con SweepGradient para animar

introduzca la descripción de la imagen aquí

Hola, estoy tratando de dibujar un círculo como se muestra en la imagen. Donde mis valores oscila entre 0-100. 0-40 verde 41-60 amarillo 61-80 naranja y 81-100 rojo.

la vista debe animar de 0 a un valor definido lentamente, éste a alcanzar.

He intentado el siguiente código, y tratando de lograr, el código de la siguiente manera:

public class GradiantActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new GradientTestView(this)); } private class GradientTestView extends View { private Paint mPaint; private final int[] mColors; private int CENTER_X; private int CENTER_Y; private Shader shader; /** * Radius coordinates to draw circle. */ float r; public GradientTestView(Context context) { super(context); mColors = new int[] { 0xFF00FF00, //Green 0xFFFFFF00, //Yellow //Orange 0xFFFF0000 //Red }; shader = new SweepGradient(0, 0, mColors, null); mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(100); } @Override protected void onDraw(Canvas canvas) { canvas.translate(CENTER_X, CENTER_Y); mPaint.setShader(shader); canvas.drawOval(new RectF(-r, -r, r, r), mPaint); //for different positioning //canvas.translate(0, CENTER_Y); //canvas.translate(-CENTER_X * 3 / 4, -CENTER_Y / 2); //canvas.translate(CENTER_X * 3 / 2, 0); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { CENTER_X = this.getWidth() / 2; CENTER_Y = this.getHeight() / 2; r = CENTER_Y / 2 - mPaint.getStrokeWidth() * 0.5f; } } } 

Por favor ayude en animar esta vista de 0 a cualquier valor definido.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.