如何在Android中绘制两个颜色弧

时间:2013-10-21 13:17:33

标签: android surfaceview

我想绘制圆圈,它将用两种颜色着色。一种颜色从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颜色单色。

2 个答案:

答案 0 :(得分:2)

来自Canvas documentation

  

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

     

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

sweepAngle参数不是结束角度,它是以度为单位的角度大小。你的第二个弧正在绘制一个完整的椭圆,因为你的角度为360

尝试使用180作为扫描角度。

答案 1 :(得分:0)

试试这个:

  Shader gradient = new SweepGradient (0,getMeasuredHeight()/2, Color.RED, Color.WHITE);
  lighted.setShader(gradient);
  canvas.drawArc(rectf, -90, 360, false, lightRed);