Detailed explanation of real-time circular progress bar for mini program development

零下一度
Release: 2018-05-18 10:24:46
Original
4344 people have browsed it


Recently, in order to make a recording button, I studied the implementation of the real-time circular progress bar of the mini program

Without further ado, here is a rendering first!

Detailed explanation of real-time circular progress bar for mini program development

Initial state

Detailed explanation of real-time circular progress bar for mini program development

##Click the middle button to start drawing

Detailed explanation of real-time circular progress bar for mini program development

Drawing process

Detailed explanation of real-time circular progress bar for mini program development

End of drawing

Implementation ideas

Establish two

canvas tag, first draw the bottom layer of light gray circle background, and then draw the upper layer of red progress bar.

WXML code

<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>
Copy after login

WXSSCode

Special note: It is best to use the underlying canvas

z-index:-5 ; Placed at the bottom layer

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;
}
Copy after login

JSCode
//获取应用实例
var app = getApp()

var interval;
var varName;
var ctx = wx.createCanvasContext(&#39;canvasArcCir&#39;);

Page({
  data: {
  },
  drawCircle: function () {
    clearInterval(varName);
    function drawArc(s, e) {
      ctx.setFillStyle(&#39;white&#39;);
      ctx.clearRect(0, 0, 200, 200);
      ctx.draw();
      var x = 100, y = 100, radius = 96;
      ctx.setLineWidth(5);
      ctx.setStrokeStyle(&#39;#d81e06&#39;);
      ctx.setLineCap(&#39;round&#39;);
      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(&#39;canvasCircle&#39;);
    cxt_arc.setLineWidth(6);
    cxt_arc.setStrokeStyle(&#39;#eaeaea&#39;);
    cxt_arc.setLineCap(&#39;round&#39;);
    cxt_arc.beginPath();
    cxt_arc.arc(100, 100, 96, 0, 2 * Math.PI, false);
    cxt_arc.stroke();
    cxt_arc.draw();
  },
  onLoad: function (options) {

  }
})
Copy after login

Points to note

1. For mini program canvas drawing, please view the WeChat mini program official documentation Draw

2. The path to start drawing can be based on the variable startAngle

in the JS code to choose where to start drawing

Detailed explanation of real-time circular progress bar for mini program development

Finally there is You can leave a message if you have any questions, and let’s discuss and make progress together~~

[Related recommendations]

1.

WeChat mini program to create a custom circular progress bar

2.

Canvas implements a circular progress bar and displays a digital percentage

3.

WeChat payment for WeChat development##4.

Detailed explanation of WeChat applet payment function development error summary

5.

Use css3 to implement circular progress bar

6.

Use jQuery to achieve beautiful Circular progress bar countdown plug-in_jquery

The above is the detailed content of Detailed explanation of real-time circular progress bar for mini program development. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template