Intereting Posts
Facebook глубокая привязка к Android Android: обработайте обратный вызов OAuth с помощью фильтра намерения Как автоматически увеличить автоматически текущее местоположение в карте Google api для Android? Как управлять состоянием приложения в Android (для разработчика iPhone) Как получить текущее местоположение в Android Редактировать текст с круглым углом и тенью Sqlite обновляет столбец на основе where where android Ошибка автокомплектаText, чтобы получить повторяющиеся значения в списке? В чем разница между различными методами получения контекста? Изменение цвета светодиодного уведомления каждые 5 секунд Правильный поток в RxJava с дооснащением и королевством Запустить Android-приложение с конкретной деятельностью Являются ли статические переменные действительно «глобальными» (общесистемными) в Android? Создание звуковой обработки Маленький Endian SDK с NDK Сохранить состояние фрагмента с помощью навигационного ящика

Круг с SweepGradient для анимации

Введите описание изображения здесь

Привет, я пытаюсь нарисовать круг, как показано на рисунке. Где мои значения колеблются от 0 до 100. 0-40 зеленый 41-60 желтый 61-80 оранжевый и 81-100 красный.

Представление должно анимировать от 0 до определенного значения медленно, этого для достижения.

Я пробовал следующий код и пытаюсь выполнить код следующим образом:

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; } } } 

Помогите в анимации этого вида от 0 до любого определенного значения.