自定义环形进度条

#环形进度条


在app更新时需要用到这样一个环形进度条,不是很难,自己动手写了一个。

效果图如下:

这里写图片描述


贴出关键代码

  • 重写onDraw( )方法
@Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        //绘制圆环背景
        RectF rectF = new RectF(0 + rpPaint.getStrokeWidth() / 2,
                0 + rpPaint.getStrokeWidth() / 2,
                raduis * 2 - rpPaint.getStrokeWidth() / 2,
                raduis * 2 - rpPaint.getStrokeWidth() / 2);
        canvas.drawArc(rectF, 0, 360, false, rbPaint);

        //绘制圆环进度条
        canvas.drawArc(rectF, -90, angle, false, rpPaint);

        //绘制进度文字
        float x = raduis - txtPaint.measureText(txt) / 2;
        Paint.FontMetrics fontMetrics = txtPaint.getFontMetrics();
        float dy = -(fontMetrics.descent + fontMetrics.ascent) / 2;
        float y = raduis + dy;
        canvas.drawText(txt, x, y, txtPaint);
    }

通过修改drawArc (RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint) 方法中sweepAngle达到绘制的动画效果。

  • 另外还自定义了几个属性供设置环形进度条的样式:

txtsize – 设置进度条中间字体的大小
txtcolor – 设置进度条中间字体的颜色
rbColor – 设置进度条背景环形的颜色
rpColor – 设置进度条的颜色
roundWidth – 设置进度条的宽度

  • 配置文件中的代码
<com.my.roundpro.RoundProView
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/roundview"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_centerInParent="true"
        app:rbColor="@android:color/darker_gray"
        app:roundWidth="20dp"
        app:rpColor="@android:color/holo_orange_dark"
        app:txtcolor="@color/colorPrimaryDark"
        app:txtsize="30dp" />

简单的贴了一下代码,方便使用。代码链接:
https://github.com/markfeng8/RoundPro

记录学习,仅供参考

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值