Ваши углы дуги неправильны.См. DrawArc Ссылка на холст , аргументы угла такие:
startAngle - начальный угол (в градусах), где начинается дуга
sweepAngle - угол поворота (в градусах), измеренный по часовой стрелке
Ваша последняя дуга покрывает все предыдущие.Вы должны сделать что-то вроде (код Kotlin ниже):
private val oval = RectF(200F, 200F, 450F, 450F)
private val paint = Paint()
override fun onDraw(canvas: Canvas) {
paint.style = Paint.Style.FILL
paint.color = Color.BLACK
canvas.drawArc(oval, 0F, 90F, true, paint)
paint.color = Color.BLUE
canvas.drawArc(oval, 90F, 90F, true, paint)
paint.color = Color.RED
canvas.drawArc(oval, 180F, 90F, true, paint)
paint.color = Color.GREEN
canvas.drawArc(oval, 270F, 90F, true, paint)
}
Нарисует что-то вроде:
Java версия:
private RectF oval = new RectF(0F,0F,100F,100F);
private Paint paint = new Paint();
@Override
protected void onDraw(Canvas canvas) {
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.BLACK);
canvas.drawArc(oval, 0F, 90F, true, paint);
paint.setColor(Color.BLUE);
canvas.drawArc(oval, 90F, 1800F, true, paint)
paint.setColor(Color.RED);
canvas.drawArc(oval, 0F, 190F, true, paint)
paint.setColor(Color.GREEN);
canvas.drawArc(oval, 270F, 360F, true, paint)
}