drawArc

public class CircleView extends View {
    private Paint paint;
    private SweepGradient mSweepGradient;

    public CircleView(Context context) {
        this(context,null);
    }

    public CircleView(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }

    public CircleView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        paint=new Paint();
        //设置是否使用抗锯齿功能,会消耗较大资源,绘制图形速度会变慢。
        paint.setAntiAlias(true);
        paint.setColor(Color.RED);
        /**
         Android在用画笔的时候有三种Style,分别是
         Paint.Style.STROKE 只绘制图形轮廓(描边)
         Paint.Style.FILL 只绘制图形内容
         Paint.Style.FILL_AND_STROKE 既绘制轮廓也绘制内容
         */
        paint.setStyle(Paint.Style.STROKE);
        paint.setStrokeWidth(20);
        // 设置渐变
        int[] mGradientColors = {Color.GREEN, Color.YELLOW, Color.RED};
        mSweepGradient = new SweepGradient(250-10, 250-10, mGradientColors, null);
        paint.setShader(mSweepGradient);
        paint.setStrokeCap(Paint.Cap.ROUND);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        setMeasuredDimension(500,500);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        //画布旋转135度,围绕中心点旋转
        canvas.rotate(135,250,250);
        /**
         oval :指定圆弧的外轮廓矩形区域。
         startAngle: 圆弧起始角度,单位为度。
         sweepAngle: 圆弧扫过的角度,顺时针方向,单位为度,从右中间开始为零度。
         useCenter:  如果为True时,在绘制圆弧时将圆心包括在内,通常用来绘制扇形。关键是这个变量,下面将会详细介绍。

         */
        canvas.drawArc(new RectF(10,10,490,490),0,270,false,paint);
    }
}

运行结果


drawArc_第1张图片
image

你可能感兴趣的:(drawArc)