#环形进度条
在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
记录学习,仅供参考