小程序 · 2024年1月4日

微信小程序实现圆形进度条方法介绍

前言

最近工作中为了做一个录制按钮,研究了下小程序的实时圆形进度条实现,下面这篇文章就来给大家详细的介绍了实现的方法示例,废话不多说,先来看看效果图吧。

效果图如下

初始状态

点击中间按钮开始绘制

绘制过程

绘制结束

实现思路

建立两个canvas标签,先绘制底层的浅灰色圆圈背景,再绘制上层的红色进度条。

WXML代码

<view>
 <view>
 <canvas>
 </canvas>
 <canvas>
 </canvas>
 <view>开始动态绘制</view>
 </view></view>

登录后复制

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 <p><strong>注意的要点</strong></p><p>1、关于小程序canvas绘制,请观看微信小程序官方文档绘制</p><p>2、开始绘制的路径可以根据 JS代码中的变量startAngle 来选择从哪里开始绘制</p>

登录后复制

以上就是微信小程序实现圆形进度条方法介绍的详细内容,更多请关注GTHOST其它相关文章!