微信小程序自定义扫码界面

这篇具有很好参考价值的文章主要介绍了微信小程序自定义扫码界面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

因扫码功能需支持自定义输入,调用微信 scanCode 无法自定义界面补充输入框,所以使用原生组件 camera。

一、Demo 演示

小程序自定义扫码演示

二、核心逻辑

1、调用摄像头扫码

将媒体组件 camera 应用模式设置为 scanCode,并绑定扫码识别成功方法

// wxml
<camera mode="scanCode" bindscancode='scancode' />

// js
scancode(event){
  const { result } = event.detail // 获取校验扫描结果
  wx.showToast({ title: `扫描结果:${result}`, icon: 'none' })
}
2、模拟扫码动画

为提升体验,模拟扫码动画

// wxml
<view class="scan-container">
  <view class="scan-box" />
  <view class='scan-animation' animation="{{animation}}" />
</view>

// js
const animation = wx.createAnimation({}); // 创建移动动画对象

// 扫描动画
startAnimation(){
  // 是否向下平移
  let down = true

  setInterval(() => {
    if (down) {
      animation.translateY(100).step({ duration: 3000 })
    } else {
      animation.translateY(0).step({ duration: 3000 })
  }

  down = !down
  this.setData({ animation: animation.export() })
  }, 3000)
}

三、完整代码

JS 代码

const animation = wx.createAnimation({}); // 创建移动动画对象
const innerAudioContext = wx.createInnerAudioContext() // 提示音
innerAudioContext.src = 'https://qdstorage.okii.com/retail-app/common/beep.mp3'

Page({
  
  /**
   * Lifecycle function--Called when page load
   */
  onLoad() {
    const { height, top } = wx.getMenuButtonBoundingClientRect();

    this.setData({ 
      menuButtonTop: `${top}px`,
      menuButtonHeight: `${height}px`
    })
  },

  /**
   * Lifecycle function--Called when page show
   */
  onShow() {
    this.startAnimation()
  },

  // 扫描动画
  startAnimation(){
	  // 是否向下平移
    let down = true

    setInterval(() => {
      if (down) {
        animation.translateY(100).step({ duration: 3000 })
      } else {
        animation.translateY(0).step({ duration: 3000 })
      }

      down = !down
      this.setData({ animation: animation.export() })
    }, 3000)
  },
  // 扫码
  scancode(event){
    wx.vibrateShort() // 触发手机振动
    innerAudioContext.play() // 提示音
    const { result } = event.detail // 获取校验扫描结果

    wx.showToast({ title: `扫描结果:${result}`, icon: 'none' })
  },
  changeInputType() {
    wx.showToast({ title: '请自定义实现', icon: 'none' })
  },
  // 返回上一级
  goBack() {
    wx.showToast({ title: '请自定义实现', icon: 'none' })
  },
})

wxml 代码

<view class="custom-scan">
  <!-- 扫码区域 -->
  <camera
    mode="scanCode"
    frame-size='large'
    flash="{{ cameraFlash }}"
    class="scan-view"
    bindscancode='scancode' 
  >
    <view class="navigation-container" style="{{ 'height: ' + menuButtonHeight + ';padding-top: ' + menuButtonTop }}">
      <icon class="icon-close" type="cancel" size="30" color="#fff" bindtap="goBack" />
    </view>

    <view class="header-container">
      <view class="input-button" bindtap="changeInputType">手动输入</view>
    </view>
    <view class="scan-container">
      <view class="scan-box" />
      <view class='scan-animation' animation="{{animation}}" />
    </view>
  </camera>
</view>

less 代码文章来源地址https://www.toymoban.com/news/detail-605150.html

.custom-scan {
  width: 100vw;
  height: 100vh;

  .scan-view {
    width: 100%;
    height: 100%;
  }

  .navigation-container {
    display: flex;
    align-items: center;

    .icon-close {
      padding-left: 22px;
    }
  }

  .header-container {
    display: flex;
    justify-content: flex-end;
    padding: 80rpx 30rpx 40rpx 30rpx;
  
    .input-button {
      display: flex;
      align-items: center;
      justify-content: center;
      width: 130rpx;
      height: 64rpx;
      border-radius: 54rpx;
      color: #eee;
      font-size: 24rpx;
      background-color: rgba(50, 50, 50, 0.6);
    }
  }

  .scan-container {
    display: flex;
    justify-content: center;
    margin-top: 60rpx;
    width: 100%;
    height: 100%;

    .scan-box {
      position: relative;
      width: 500rpx;
      height: 220rpx;
      border-radius: 20rpx;
      background-image: url("https://qdstorage.okii.com/retail-app/common/scan-box.png");
      background-size: 100% 100%;
    }

    .scan-animation {
      position: absolute;
      margin-top: 10rpx;
      width: 530rpx;
      height: 6rpx;
      background-color: #ddd;
      border-radius: 50%;
    }
  }
}

到了这里,关于微信小程序自定义扫码界面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp 微信小程序:扫码

    HBuilderX 创建一个新项目,直接用默认模板 添加一个【扫码】按钮,绑上点击事件。 使用 uni.scanCode 调起客户端扫码界面,扫码成功后返回对应的结果。 界面 演示 camera 之 scanCode模式扫码 扫码结果: HBuilderX 创建一个新项目,直接用默认模板 添加一个 camera 组件,如下调整。

    2024年02月08日
    浏览(47)
  • 微信扫码跳转微信小程序

    一:首先声明为什么需要这样做         项目中需要在后台管理页面进行扫码支付,其他人弄了微信小程序支付,所以就需要挑战小程序进行支付,在跳转的时候需要参数例如订单编号等 二:跳转小程序的方法有多种         接口调用凭证 | 微信开放文档          具体可

    2024年02月11日
    浏览(70)
  • 微信小程序扫码功能

    扫码功能有两个实现形式: 1.做一个扫码按钮,调用微信自带api(wx.scanCode ) wx.scanCode({ success(res) { //res.path 可以打印出来,包含所有参数 }) 2.就是直接通过微信的扫一扫,获取参数 如果本地测试的话参照如下图 编译二维码入口(img) 在api.js中 onShow: function (options) { //options

    2024年02月07日
    浏览(45)
  • 微信小程序调起扫码功能

    场景:在微信小程序中使用扫码功能,对扫描的物品进行识别处理 1、先随便定义一个点击调起扫码的元素 2、在JS中编写调起扫码功能 以上就是实现微信小程序调起扫码功能,并识别出来结果

    2024年02月13日
    浏览(46)
  • 微信小程序用户长按图片扫码

    下面是一个简单的示例代码,实现了在微信小程序中长按图片后弹出“识别图中二维码”选项,并识别图片中的二维码: 上述代码中,我们在wxml文件中添加了一个图片标签,并绑定了长按事件。当用户长按图片时,会触发onLongTap函数,该函数使用wx.showActionSheet弹出操作菜单

    2024年02月17日
    浏览(40)
  • 微信扫码跳转到微信小程序指定页面

    用户想通过在微信上扫描实验室二维码直接进入小程序申请加入实验室 1、首先我们需要在微信公众平台的开发管理——开发设置,找到(扫普通链接二维码打开小程序),点击添加,会出现下面的页面,配置好之后点击保存就行了 填写页配置点击保存之后要再发布 2、在微

    2024年02月16日
    浏览(141)
  • 微信小程序扫码连接wifi功能

    店铺出示二维码,用户扫码之后自动连接店铺wifi而后跳转至我们小程序首页 1、小程序appid: 微信小程序的appid获取地址:https://mp.weixin.qq.com/wxamp/basicprofile/index,设置页面拉到最下面。 2、小程序appKey: 密钥获取地址:打开微信公众平台官网, 扫码登录,左侧菜单【开发 - 开

    2024年01月22日
    浏览(55)
  • 微信小程序扫码打开H5页面

    要在微信小程序中扫描二维码打开H5页面,你需要使用微信小程序的API接口wx.scanCode()。以下是示例代码: 1 . 在小程序页面中添加一个按钮,并绑定点击事件: 在小程序页面的js文件中编写scanCode()方法: 在小程序中添加一个webview页面用于展示H5页面,代码如下: JS代码 以上

    2024年02月11日
    浏览(58)
  • uniapp项目编译成H5后跳转到微信小程序(支持微信扫码、支付宝扫码)

    uniapp项目编译成 H5 后跳转到 微信小程序 (支持微信H5、支付宝H5) 场景:1、微信扫码跳转到该H5中后点击某事件(或者不点击直接跳转)需要跳转到微信小程序;2、支付宝扫码跳转到H5中后点击某事件(或者不点击直接跳转)需要跳转到微信小程序 思路:调用后端接口返回

    2024年02月13日
    浏览(56)
  • 微信小程序嵌套H5页面,调用微信小程序扫码功能,并将结果传回H5页面

    实现方式: 小程序嵌套h5页面,点击h5页面的扫码按钮跳转到小程序的扫码页面,进入之后会立即扫码,拿到扫码结果后,跳转到小程序定义好的webview页面,再由webview页面进入h5页面。 缺点:为了唤起扫码,会进入一个空白的扫码页面 1、小程序嵌套h5页面方法 在小程序中,创

    2024年02月12日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包