Intereting Posts
Android & Phonegap: ошибка возникает при загрузке функции javascript с помощью loadUrl Андроид с использованием полей по нескольким размерам экрана Вызов Gradle buildConfig несколько раз Поворот изображения из данных датчика ориентации Как отправить push-уведомление в два сегмента в разное время за один раз в сеансе Потоковое видео с peerjs webrtc с веб-браузера Android слишком медленно Как программно установить атрибут layout_align_parent_right кнопки в относительной компоновке? Java.lang.illegalstateexception: на этом макете уже установлен завод Обработать значение предпочтения перед сохранением в Android? Android – Активность против ListActivity – Какой должен быть класс активности? Как получить доступ к ресурсам по имени в android Использование TYPE_STEP_COUNTER в фоновом режиме? Возврат ключевого события в EditText Base64 закодировать аудиофайл и отправить в виде строки, затем декодировать строку Ошибка сборки Xamarin (monodroid) + adMob

Круг с 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 до любого определенного значения.