下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
【移動應用開發(fā)技術】微信小程序如何實現(xiàn)圓形進度條
這篇文章給大家分享的是有關微信小程序如何實現(xiàn)圓形進度條的內(nèi)容。在下覺得挺實用的,因此分享給大家做個參考,一起跟隨在下過來看看吧。小程序中使用圓形倒計時,效果圖:思路使用2個canvas一個是背景圓環(huán),一個是彩色圓環(huán)。使用setInterval讓彩色圓環(huán)逐步繪制。解決方案第一步先寫結構一個盒子包裹2個canvas以及文字盒子;盒子使用相對定位作為父級,flex布局,設置居中;一個canvas,使用絕對定位作為背景,canvas-id="canvasProgressbg"另一個canvas,使用相對定位作為進度條,canvas-id="canvasProgress"代碼如下://
wxml
<view
class="container">
<view
class='progress_box'>
<canvas
class="progress_bg"
canvas-id="canvasProgressbg">
</canvas>
<canvas
class="progress_canvas"
canvas-id="canvasProgress">
</canvas>
<view
class="progress_text">
<view
class="progress_dot"></view>
<text
class='progress_info'>
{{progress_txt}}</text>
</view>
</view>
</view>//
wxss
.progress_box{
position:
relative;
width:220px;
height:
220px;
//
這里的寬高是必須大于等于canvas圓環(huán)的直徑
否則繪制到盒子外面就看不見了
//
一開始設置
width:440rpx;
height:440rpx;
發(fā)現(xiàn)
在360X640分辨率的設備,下繪制的圓環(huán)跑盒子外去了
//
小程序使用rpx單位適配
,但是canvas繪制的是px單位的。所以只能用px單位繪制的圓環(huán)在盒子內(nèi)顯示
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;
}第二步數(shù)據(jù)綁定從wxml中可以看到我們使用了一個數(shù)據(jù)progress_txt,所以在js中設置data如下:
data:
{
progress_txt:
'正在匹配中...',
},第三步canvas繪制敲黑板,劃重點1.先繪制背景在js中封裝一個畫圓環(huán)的函數(shù)drawProgressbg,canvas畫圓在onReady中執(zhí)行這個函數(shù);小程序canvas組件與H5的canvas有點差別,請查看文檔,代碼如下drawProgressbg:
function(){
//
使用
wx.createContext
獲取繪圖上下文
context
var
ctx
=
wx.createCanvasContext('canvasProgressbg')
ctx.setLineWidth(4);//
設置圓環(huán)的寬度
ctx.setStrokeStyle('#20183b');
//
設置圓環(huán)的顏色
ctx.setLineCap('round')
//
設置圓環(huán)端點的形狀
ctx.beginPath();//開始一個新的路徑
ctx.arc(110,
110,
100,
0,
2
*
Math.PI,
false);
//設置一個原點(100,100),半徑為90的圓的路徑到當前路徑
ctx.stroke();//對當前路徑進行描邊
ctx.draw();
},
onReady:
function
()
{
this.drawProgressbg();
},看一下效果如下:2.繪制彩色圓環(huán)在js中封裝一個畫圓環(huán)的函數(shù)drawCircle,在onReady中執(zhí)行這個函數(shù);
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();
//
參數(shù)step
為繪制的圓環(huán)周長,從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)
},3.設置一個定時器在js中的data設置一個計數(shù)器count,一個步驟step,一個定時器在js中封裝一個定時器的函數(shù)countInterval,在onReady中執(zhí)行這個函數(shù);
data:
{
progress_txt:
'正在匹配中...',
count:0,
//
設置
計數(shù)器
初始為0
countTimer:
null
//
設置
定時器
初始為null
},
countInterval:
function
()
{
//
設置倒計時
定時器
每100毫秒執(zhí)行一次,計數(shù)器count+1
,耗時6秒繪一圈
this.countTimer
=
setInterval(()
=>
{
if
(this.data.count
<=
60)
{
/*
繪制彩色圓環(huán)進度條
注意此處
傳參
step
取值范圍是0到2,
所以
計數(shù)器
最大值
60
對應
2
做處理,計數(shù)器count=60的時候step=2
*/
this.drawCircle(this.data.count
/
(60/2))
this.data.count++;
}
else
{
this.setData({
progress_txt:
"匹配成功"
});
clearInterval(this.countTimer);
}
},
100)
},
onReady:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版投資股權轉讓與旅游產(chǎn)業(yè)發(fā)展合作協(xié)議3篇
- 二零二五版學生入學協(xié)議范本全面保障入學權益3篇
- 面包磚鋪設施工方案
- 青島室內(nèi)綠化施工方案
- 二零二五年度二手車買賣合同附帶車輛回收服務協(xié)議3篇
- 遼寧電鍍線施工方案
- 二零二五年度高品質通信工程電桿管材料購銷及配送合同9篇
- 二零二五年度跨區(qū)域土地轉讓協(xié)議合同3篇
- 二零二五版石材雕刻業(yè)務合作協(xié)議書3篇
- 二零二五年度公司向個人提供專利權收益權借款合同模板4篇
- 廣東省茂名市電白區(qū)2024-2025學年七年級上學期期末質量監(jiān)測生物學試卷(含答案)
- 2024版?zhèn)€人私有房屋購買合同
- 2024爆炸物運輸安全保障協(xié)議版B版
- 2025年度軍人軍事秘密保護保密協(xié)議與信息安全風險評估合同3篇
- 《食品與食品》課件
- 讀書分享會《白夜行》
- 中國服裝零售行業(yè)發(fā)展環(huán)境、市場運行格局及前景研究報告-智研咨詢(2025版)
- 光伏工程施工組織設計
- 汽車車身密封條設計指南
- DB4101-T 121-2024 類家庭社會工作服務規(guī)范
- 化學纖維的鑒別與測試方法考核試卷
評論
0/150
提交評論