### [小程序开发之实时圆形进度条详解](https://www.prosaas.cn/article/17580) **Published:** 2018-05-18T02:24:46 **Author:** 5201314 **Excerpt:** 最近为了做一个录制按钮,研究了下小程序的实时圆形进度条实现废话不多说,先上一张效果图!初始状态点击中间按钮开始… ## 最近为了做一个录制按钮,研究了下小程序的实时圆形进度条实现 废话不多说,先上一张效果图! ![](https://img.php.cn/upload/article/000/001/506/5fec52a8642861ddc89d0d547893f092-0.png) 初始状态 ![](https://img.php.cn/upload/article/000/001/506/5fec52a8642861ddc89d0d547893f092-1.png) 点击中间按钮开始绘制 ![](https://img.php.cn/upload/article/000/001/506/5fec52a8642861ddc89d0d547893f092-2.png) 绘制过程 ![](https://img.php.cn/upload/article/000/001/506/9fa6c0994657961799466a6ab1ec783a-3.png) 绘制结束 ## 实现思路 建立两个canvas标签,先绘制底层的浅灰色圆圈背景,再绘制上层的红色进度条。 ## WXML代码 开始动态绘制 ## WXSS代码 特别注意:底层的canvas最好使用 z-index:-5; 放置于底层 page { width: 100%; height: 100%; background-color: #fff; } .circle-box { text-align: center; margin-top: 10vw; } .circle { position: absolute; left: 0; right: 0; margin: auto; } .draw\_btn { width: 35vw; position: absolute; top: 33vw; right: 0; left: 0; margin: auto; border: 1px #000 solid; border-radius: 5vw; } ## JS代码 //获取应用实例 var app = getApp() var interval; var varName; var ctx = wx.createCanvasContext('canvasArcCir'); Page({ data: { }, drawCircle: function () { clearInterval(varName); function drawArc(s, e) { ctx.setFillStyle('white'); ctx.clearRect(0, 0, 200, 200); ctx.draw(); var x = 100, y = 100, radius = 96; ctx.setLineWidth(5); ctx.setStrokeStyle('#d81e06'); ctx.setLineCap('round'); ctx.beginPath(); ctx.arc(x, y, radius, s, e, false); ctx.stroke() ctx.draw() } var step = 1, startAngle = 1.5 \* Math.PI, endAngle = 0; var animation\_interval = 1000, n = 60; var animation = function () { if (step <= n) { endAngle = step \* 2 \* Math.PI / n + 1.5 \* Math.PI; drawArc(startAngle, endAngle); step++; } else { clearInterval(varName); } }; varName = setInterval(animation, animation\_interval); }, onReady: function () { //创建并返回绘图上下文context对象。 var cxt\_arc = wx.createCanvasContext('canvasCircle'); cxt\_arc.setLineWidth(6); cxt\_arc.setStrokeStyle('#eaeaea'); cxt\_arc.setLineCap('round'); cxt\_arc.beginPath(); cxt\_arc.arc(100, 100, 96, 0, 2 \* Math.PI, false); cxt\_arc.stroke(); cxt\_arc.draw(); }, onLoad: function (options) { } }) ## 注意的要点 1、关于小程序canvas绘制,请观看 微信小程序官方文档绘制 2、开始绘制的路径可以根据 _JS代码中的变量startAngle_ 来选择从哪里开始绘制 ![](https://img.php.cn/upload/article/000/001/506/9fa6c0994657961799466a6ab1ec783a-4.png) 最后有什么问题可以留言,大家一起讨论共同进步~~ 【相关推荐】 1. 微信小程序之制作自定义圆形进度条 2. Canvas实现圆形进度条并显示数字百分比 3. 微信开发之微信支付 4. 详解微信小程序支付功能开发错误总结 5. 利用css3实现圆形进度条 6. 利用jQuery实现漂亮的圆形进度条倒计时插件\_jquery 以上就是小程序开发之实时圆形进度条详解的详细内容,更多请关注知企PROSAAS其它相关文章! **Tags:** canvas, css3, jquery, JS, 微信小程序 **Categories:** 后端开发 ---