基本信息
源码名称:环形进度条(动态显示运动步数)
源码大小:8.56M
文件格式:.zip
开发语言:Java
更新时间:2021-01-18
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 5 元×
微信扫码支付:5 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
使用自定义view画圆形进度条,设置目标值,输入当前值,根据值的不同计算出在圆内,超过圆的效果。
调用时,使用动画。
//将起点转向12点钟位置
int startAngle = -90;
//求角度
float angle = (float) ((mCurrent * 1.0 / mTarget) * 360);
if (angle <= 360) {//没有超过一圈
//阈值
float threshold = 350f;
if (angle <= threshold) {//在350度内,不用做特殊处理
paint.setColor(mCircleColor);
paint.setShader(null);
canvas.drawArc(oval, startAngle, angle, false, paint);
} else {//超过阈值部分
//应该使用渐变先画出背景圆
SweepGradient sweepGradient = new SweepGradient(mCircleWidth / 2, mCircleWidth / 2, mColors, null);
Matrix matrix = new Matrix();
matrix.setRotate(-95, mCircleWidth / 2, mCircleWidth / 2);
sweepGradient.setLocalMatrix(matrix);
paint.setShader(sweepGradient);
canvas.drawArc(oval, startAngle, threshold, false, paint);
//然后再补上丢失的圆角
if (angle > threshold) {
float newAngle = angle - threshold;
paint.setColor(mCircleColor);
paint.setShader(null);
canvas.drawArc(oval, startAngle threshold, newAngle, false, paint);
}
}
} else {//已经超过一圈了,使用渐变色即可
//看看超出多少度
float newAngle = angle % 360;
//填充开头颜色
paint.setColor(mColors[0]);
paint.setShader(null);
//因为偏移了 90°,然后需要再多出 10° 的子弹头,后面 10是因为只移动了350度,如果移动360就会出现重叠
canvas.drawArc(oval, -90 - 10 10 newAngle, 10, false, paint);
// //设置渐变色
SweepGradient sweepGradient = new SweepGradient(mCircleWidth / 2, mCircleWidth / 2, mColors, null);
Matrix matrix = new Matrix();
matrix.setRotate(newAngle - 95 10, mCircleWidth / 2, mCircleWidth / 2);
sweepGradient.setLocalMatrix(matrix);
paint.setShader(sweepGradient);
canvas.drawArc(oval, newAngle - 90 10, 350, false, paint);
}