自定义环形进度条

来源:互联网 发布:暗黑破坏神3数据库app 编辑:程序博客网 时间:2024/05/29 19:18

环形进度条


在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

记录学习,仅供参考

原创粉丝点击