基本信息
源码名称:环形进度条(动态显示运动步数)
源码大小:8.56M
文件格式:.zip
开发语言:Java
更新时间:2021-01-18
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 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); }