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);
    }
}

运行结果


image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,286评论 19 139
  • Run Loops 运行循环是与线程相关联的基础架构的一部分。runloop是一个事件处理循环,你可以使用它来处理...
    曾经那样美阅读 518评论 0 0
  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 2,527评论 1 15
  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 3,022评论 1 18
  • 继续带孩子在外面办事,下午抽空去了公园跳蹦床。在家就磨耳朵。这一周就在外面,践行基本为零。下周改进!
    马行千里玥溢彩阅读 153评论 0 0