搜尋
首頁微信小程式小程式開發微信小程式實作圓形進度條實例分享

微信小程式實作圓形進度條實例分享

Feb 09, 2018 pm 02:39 PM
實例小程式進度

本文主要和大家分享微信小程式實現圓形進度條實例,希望能幫助大家。

小程式中使用圓形倒數計時,效果圖:
微信小程式實作圓形進度條實例分享

  1. ##使用2個canvas 一個是背景圓環,一個是彩色圓環。

  2. 使用setInterval 讓彩色圓環逐步繪製。

解決方案

第一步先寫結構

一個盒子包裹2個canvas以及文字盒子;
盒子使用相對定位作為父級,flex佈局,設定居中;
一個canvas,使用絕對定位作為背景,canvas-id="canvasProgressbg"
另一個canvas,使用相對定位作為進度條,canvas-id="canvasProgress"
程式碼如下:

// wxml
 <view>
     <view>
        <canvas>  </canvas> 
        <canvas>  </canvas> 
        <view>
            <view></view> 
            <text> {{progress_txt}}</text>
        </view>     
    </view>
</view>
// wxss
.progress_box{
  position: relative;
  width:220px;
  height: 220px;  
// 这里的宽高是必须大于等于canvas圆环的直径 否则绘制到盒子外面就看不见了
// 一开始设置 width:440rpx; height:440rpx; 发现 在360X640分辨率的设备,下绘制的圆环跑盒子外去了
// 小程序使用rpx单位适配 ,但是canvas绘制的是px单位的。所以只能用px单位绘制的圆环在盒子内显示
  display: flex;  
  align-items: center;
  justify-content: center;
  background-color: #eee;
}
.progress_bg{
  position: absolute;
    width:220px;
  height: 220px; 
}
.progress_canvas{ 
  width:220px;
  height: 220px; 
} 
.progress_text{ 
  position: absolute; 
  display: flex;  
  align-items: center;
  justify-content: center
}
.progress_info{   
  font-size: 36rpx;
  padding-left: 16rpx;
  letter-spacing: 2rpx
} 
.progress_dot{
  width:16rpx;
  height: 16rpx;  
  border-radius: 50%;
  background-color: #fb9126;
}

第二步驟資料綁定

從wxml中可以看到我們使用了一個資料progress_txt,所以在js中設定data如下:

 data: {
    progress_txt: '正在匹配中...',  
  },

第三步canvas繪製

敲黑板,劃重點

#1. 先繪製背景

  1. 在js中封裝一個畫圓環的函數drawProgressbg,canvas 畫圓

  2. 在onReady中執行這個函數;

##小程式canvas元件與H5的canvas有點差別,請查看文檔,程式碼如下

drawProgressbg: function(){
    // 使用 wx.createContext 获取绘图上下文 context
    var ctx = wx.createCanvasContext('canvasProgressbg')
    ctx.setLineWidth(4);// 设置圆环的宽度
    ctx.setStrokeStyle('#20183b'); // 设置圆环的颜色
    ctx.setLineCap('round') // 设置圆环端点的形状
    ctx.beginPath();//开始一个新的路径
    ctx.arc(110, 110, 100, 0, 2 * Math.PI, false);
    //设置一个原点(100,100),半径为90的圆的路径到当前路径
    ctx.stroke();//对当前路径进行描边
    ctx.draw();
  },
 onReady: function () {
    this.drawProgressbg(); 
  },
看一下效果如下:


微信小程式實作圓形進度條實例分享

2. 繪製彩色圓環

  1. 在js中封裝一個畫圓環的函數drawCircle,

  2. 在onReady中執行這個函數;

    ##
      drawCircle: function (step){  
        var context = wx.createCanvasContext('canvasProgress');
          // 设置渐变
          var gradient = context.createLinearGradient(200, 100, 100, 200);
          gradient.addColorStop("0", "#2661DD");
          gradient.addColorStop("0.5", "#40ED94");
          gradient.addColorStop("1.0", "#5956CC");
          
          context.setLineWidth(10);
          context.setStrokeStyle(gradient);
          context.setLineCap('round')
          context.beginPath(); 
          // 参数step 为绘制的圆环周长,从0到2为一周 。 -Math.PI / 2 将起始角设在12点钟位置 ,结束角 通过改变 step 的值确定
          context.arc(110, 110, 100, -Math.PI / 2, step * Math.PI - Math.PI / 2, false);
          context.stroke(); 
          context.draw() 
      },
     onReady: function () {
         this.drawProgressbg(); 
         this.drawCircle(2) 
      },
this.drawCircle(0.5) 效果如下:
this.drawCircle(1) 效果如下: this.drawCircle(2) 效果如下:
微信小程式實作圓形進度條實例分享 微信小程式實作圓形進度條實例分享 微信小程式實作圓形進度條實例分享

3. 設定一個計時器
  1. #在js中的data設定一個計數器count,一個步驟step,一個定時器
  2. 在js中封裝一個計時器的函數countInterval,
  3. 在onReady中執行這個函數;

#

  data: {
    progress_txt: '正在匹配中...',  
    count:0, // 设置 计数器 初始为0
    countTimer: null // 设置 定时器 初始为null
  },
    countInterval: function () {
    // 设置倒计时 定时器 每100毫秒执行一次,计数器count+1 ,耗时6秒绘一圈
    this.countTimer = setInterval(() => {
      if (this.data.count <br>最終效果<span class="img-wrap"><img  src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/054/025/16596bd53660412feef9b46f649ce103-5.gif?x-oss-process=image/resize,p_40" class="lazy" alt="微信小程式實作圓形進度條實例分享" ></span><p></p>相關推薦:<p><a href="http://www.php.cn/css-tutorial-383392.html" target="_self"></a>實例講解canvas實作圓形進度條動畫</p> <p><a href="http://www.php.cn/xiaochengxu-378492.html" target="_self"></a>微信小程式實作圓形進度條方法介紹</p><p><a href="http://www.php.cn/xiaochengxu-367074.html" target="_self"></a>#有關圓形進度條基礎入門教學推薦</p><p class="article fmt article__content"><br></p><p class="comments-box-content"><br></p>####

以上是微信小程式實作圓形進度條實例分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器