2

我想画圆,用两种颜色着色。从 0 到 180 度的一种颜色,其余的第二种颜色。我有这样的事情:

private void drawCircle(Canvas c)
{
    RectF oval = new RectF(20, 20, 100, 100);

    c.drawArc(oval, 0, 180, false, getPaintWithColor(R.color.background));
    c.drawArc(oval, 180, 360, false, getPaintWithColor(R.color.font_grey));
}

private Paint getPaintWithColor(int colorId){
    Paint paint = new Paint();
    paint.setAntiAlias(true);
    paint.setDither(true);
    paint.setStyle(Paint.Style.STROKE);
    paint.setStrokeWidth(4);
    paint.setColor(getResources().getColor(colorId));

    return paint;
}

但在此之后,弧线是单色的font_grey

4

2 回答 2

2

画布文档

sweepAngle 顺时针测量的扫角(以度为单位)

如果扫角 >= 360,则椭圆被完全绘制。

sweepAngle参数不是结束角度,而是角度的大小(以度为单位)。你的第二个弧是画一个完整的椭圆,因为你的角度是360

尝试使用180扫角。

于 2013-10-21T13:25:13.880 回答
0

尝试这个 :

  Shader gradient = new SweepGradient (0,getMeasuredHeight()/2, Color.RED, Color.WHITE);
  lighted.setShader(gradient);
  canvas.drawArc(rectf, -90, 360, false, lightRed);
于 2013-10-21T13:19:04.830 回答