我想绘制圆圈,它将用两种颜色着色。一种颜色从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
颜色单色。
答案 0 :(得分:2)
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);