Android 绘制双色弧形渐变

不废话,直接上源代码

/**
     * 绘制双色弧形渐变
     * @param canvas 画布
     * @param startColor 渐变的开始颜色
     * @param endColor 渐变的结束颜色
     * @param cx 圆弧的中心x坐标
     * @param cy 圆弧的中心y坐标
     * @param size 圆弧的矩形大小
     * @param sweepAngle 弧形的扫描角度
     * @param strokeWidth 绘制圆弧的线宽
     */
    private void drawGradient(Canvas canvas, int startColor, int endColor,int cx,int cy ,int size,float sweepAngle,float strokeWidth) {
        // 创建一个画笔对象
        Paint paint = new Paint();
        // 设置画笔的样式为实线
        paint.setStyle(Paint.Style.STROKE);
        // 设置画笔的线宽为40
        paint.setStrokeWidth(strokeWidth);
        // 创建一个颜色数组,包含起始颜色和结束颜色
        int [] colors = {startColor,endColor};
        // 创建一个浮点数数组,用于设置颜色的位置
        float[] position = new float[2];
        //将扫描角限制在360度以内
        sweepAngle=sweepAngle%360;
        float startAngle=90+(360f-sweepAngle)/2f;
        // 设置颜色数组的位置
        position[0] = 0;
        position[1] = (sweepAngle* 1.0f)/360f;
        // 创建一个扫过的渐变对象
        SweepGradient sweepGradient = new SweepGradient(cx, cy, colors, position);
        // 创矩阵对象
        Matrix gradientMatrix = new Matrix();
        // 将矩阵旋转startAngle度
        gradientMatrix.setRotate(startAngle, cx, cy);
        // 载入旋转矩阵
        sweepGradient.setLocalMatrix(gradientMatrix);
        // 将渐变对象设置给画笔的着色器
        paint.setShader(sweepGradient);
        // 设置圆弧的半径
        int radius=size / 2;
        //创建圆弧的矩形区域
        RectF rect=new RectF(cx - radius, cy - radius, cx + radius, cy + radius);
        // 在画布上绘制一个圆弧
        canvas.drawArc( rect,startAngle, sweepAngle, false, paint);
    }

效果图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值