前言

最近工作中为了做一个录制按钮,研究了下小程序的实时圆形进度条实现,下面这篇文章就来给大家详细的介绍了实现的方法示例,废话不多说,先来看看效果图吧。
效果图如下
初始状态
点击中间按钮开始绘制
绘制过程
绘制结束
实现思路
建立两个canvas标签,先绘制底层的浅灰色圆圈背景,再绘制上层的红色进度条。
WXML代码
<view class="wrap"> <view class="circle-box"> <canvas class="circle" style="width:200px; height:200px;" canvas-id="canvasArcCir"> </canvas> <canvas class="circle" style="z-index: -5; width:200px; height:200px;" canvas-id="canvasCircle"> </canvas> <view class="draw_btn" bindtap="drawCircle">开始动态绘制</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 <= 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 来选择从哪里开始绘制
总结
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用微信小程序能带来一定的帮助,最后有什么问题可以留言,大家一起讨论共同进步。
# 微信小程序圆形进度条
# 微信小程序实时进度条
# 微信小程序
# 进度条
# 详解微信小程序——自定义圆形进度条
# 微信小程序实现下载进度条的方法
# 微信小程序实现时间进度条功能
# 微信小程序多音频播放进度条问题
# 微信小程序自定义组件实现环形进度条
# 微信小程序之圆形进度条实现思路
# 微信小程序自定义音乐进度条的实例代码
# 微信小程序实现圆形进度条动画
# 微信小程序绘制半圆(弧形)进度条
# 微信小程序实现圆心进度条
# 这篇文章
# 有什么
# 好了
# 给大家
# 做一个
# 就来
# 大家一起
# 可以根据
# 多说
# 先来
# 共同进步
# 图吧
# 应用实例
# 文档
# 从哪里
# draw_btn
# bindtap
# WXSS
# drawCircle
相关文章:
如何基于PHP生成高效IDC网络公司建站源码?
建站之星上传入口如何快速找到?
如何设置并定期更换建站之星安全管理员密码?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
建站之星安装模板失败:服务器环境不兼容?
股票网站制作软件,网上股票怎么开户?
c# 服务器GC和工作站GC的区别和设置
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
阿里云网站制作公司,阿里云快速搭建网站好用吗?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
建站之星logo尺寸如何设置最合适?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
用v-html解决Vue.js渲染中html标签不被解析的问题
如何在Golang中指定模块版本_使用go.mod控制版本号
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
c# 在ASP.NET Core中管理和取消后台任务
音响网站制作视频教程,隆霸音响官方网站?
如何获取开源自助建站系统免费下载链接?
已有域名如何快速搭建专属网站?
制作网站的基本流程,设计网站的软件是什么?
建站之星安全性能如何?防护体系能否抵御黑客入侵?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
Python lxml的etree和ElementTree有什么区别
如何快速搭建FTP站点实现文件共享?
宝塔Windows建站如何避免显示默认IIS页面?
如何自定义建站之星网站的导航菜单样式?
建站之星备案是否影响网站上线时间?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
建站之星如何配置系统实现高效建站?
如何在万网自助建站平台快速创建网站?
学校为何禁止电信移动建设网站?
,网页ppt怎么弄成自己的ppt?
,想在网上投简历,哪几个网站比较好?
python的本地网站制作,如何创建本地站点?
建站之星多图banner生成与模板自定义指南
如何高效配置IIS服务器搭建网站?
如何在Windows服务器上快速搭建网站?
如何选择适合PHP云建站的开源框架?
网站制作免费,什么网站能看正片电影?
电商平台网站制作流程,电商网站如何制作?
如何配置WinSCP新建站点的密钥验证步骤?
建站主机是什么?如何选择适合的建站主机?
如何安全更换建站之星模板并保留数据?
Bpmn 2.0的XML文件怎么画流程图
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
如何在阿里云虚拟服务器快速搭建网站?
如何在万网主机上快速搭建网站?
高防服务器租用首荐平台,企业级优惠套餐快速部署
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
*请认真填写需求信息,我们会在24小时内与您取得联系。