全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

微信小程序实现实时圆形进度条的方法示例

前言

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

效果图如下


初始状态

点击中间按钮开始绘制

绘制过程

绘制结束

实现思路

建立两个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小时内与您取得联系。