微信小程序自定义扫码功能界面的实现代码
作者:会飞的小蚂蚱 时间:2024-11-20 22:47:52
小程序的一个扫码页面,扫码界面一直开着,同时可以处理其他功能,如下:
由于直接调用微信的scanCode,无法自定义界面,所以只能使用原生组件camera,完成这个功能,关于扫描框的四个角的图片,就自己画一下吧,中间的移动横线,使用了小程序的动画功能,在原生camera组件上,覆盖需要用到cover-view和cover-image,同时加入了提示音
/**scan.wxss**/
.scan-view {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
background-color: #B9BEC4;
position: fixed;
align-items: center;
justify-content: space-around;
}
.scan-border {
width: 94%;
height: 94%;
border: 6rpx solid #08FDFE;
border-radius: 10rpx;
display: flex;
flex-direction: column;
align-items: center;
}
.scan-camera {
width: 500rpx;
height: 500rpx;
border-radius: 6rpx;
margin: 30rpx;
}
.cover-corner {
width: 80rpx;
height: 80rpx;
position: absolute;
}
.cover-left-top {
left: 0;
top: 0;
}
.cover-right-top {
right: 0;
top: 0;
}
.cover-left-bottom {
left: 0;
bottom: 0;
}
.cover-right-bottom {
right: 0;
bottom: 0;
}
.scan-animation {
position: absolute;
top: -10rpx;
left: 10rpx;
width: 480rpx;
height: 8rpx;
background-color: #08FDFE;
border-radius: 50%;
}
<!--scan.wxml-->
<view class="scan-view">
<view class='scan-border'>
<camera class='scan-camera' mode="scanCode" binderror="cameraError" bindscancode='scancode' frame-size='large'>
<cover-image class='cover-corner cover-left-top' src='/images/left-top.png'></cover-image>
<cover-image class='cover-corner cover-right-top' src='/images/right-top.png'></cover-image>
<cover-image class='cover-corner cover-left-bottom' src='/images/left-bottom.png'></cover-image>
<cover-image class='cover-corner cover-right-bottom' src='/images/right-bottom.png'></cover-image>
<cover-view class='scan-animation' animation="{{animation}}"></cover-view>
</camera>
<!-- 这里可以处理其他内容 -->
</view>
</view>
// scan.js
// 移动动画
let animation = wx.createAnimation({});
// 提示音
let innerAudioContext = wx.createInnerAudioContext()
innerAudioContext.src = '/images/beep.mp3'
Page({
data: {
},
onLoad: function () {
},
onShow(){
this.donghua()
},
donghua(){
var that = this;
// 控制向上还是向下移动
let m = true
setInterval(function () {
if (m) {
animation.translateY(250).step({ duration: 3000 })
m = !m;
} else {
animation.translateY(-10).step({ duration: 3000 })
m = !m;
}
that.setData({
animation: animation.export()
})
}.bind(this), 3000)
},
scancode(e){
// 提示音
innerAudioContext.play()
// 校验扫描结果,并处理
let res = e.detail.result
}
})
来源:https://blog.csdn.net/hfdxmz_3/article/details/106541087
标签:微信小程序,扫码
0
投稿
猜你喜欢
python可视化text()函数使用详解
2023-08-31 19:48:15
Python实现高效求解素数代码实例
2023-04-29 16:06:32
基于javascript实现九宫格大转盘效果
2024-04-17 10:33:13
python 使用建议与技巧分享(四)
2021-06-29 20:43:28
MySQL性能诊断与调优工具
2010-11-02 11:41:00
取巧的边框等高
2009-12-16 12:11:00
一文详述 Python 中的 property 语法
2023-04-03 03:38:01
JS动态添加选项案例分析
2024-09-18 05:36:45
Python中的复杂数据类型(list、tuple)
2023-06-07 10:10:19
sql中时间以5分钟半个小时任意间隔分组的实现方法
2024-01-25 04:23:39
Python中使用Frozenset对象的案例详解
2023-09-27 09:36:32
简单仿LightBox效果
2008-09-19 21:35:00
Python数据结构之优先级队列queue用法详解
2023-03-10 03:37:40
详解Django中类视图使用装饰器的方式
2023-12-20 15:35:57
基于Python2、Python3中reload()的不同用法介绍
2023-10-01 17:59:15
Pycharm快速安装OpenCV的详细操作步骤
2021-02-01 09:51:10
javascript限制用户只能输汉字中文的方法
2023-07-02 05:30:29
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2023-11-14 18:58:45
mysql锁表和解锁语句分享
2024-01-13 12:08:36
pycharm2020.2 配置使用的方法详解
2022-10-01 12:23:23