在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → 环形进度条(动态显示运动步数)

环形进度条(动态显示运动步数)

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:8.56M
  • 下载次数:4
  • 浏览次数:31
  • 发布时间:2021-01-18
  • 实例类别:Android平台开发
  • 发 布 人:itzheng
  • 所需积分:5
 相关标签: 进度条 动态 运动 进度 显示

实例介绍

【实例简介】

使用自定义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);
        }


实例下载地址

环形进度条(动态显示运动步数)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
;
报警