中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

記(ji)錄--uni-app App端半屏連(lian)續掃碼

這里給大家分享我(wo)在(zai)網上總結出(chu)來的一些知識,希望對大家有所幫助

本文用一個簡單的 demo 講解 App端 半屏連續掃碼 的實現方式,包(bao)括(條形碼、二(er)維碼等(deng)各種各樣的碼)。

我會從實現思路講起,如果你比較急可以直接跳到 動手實現 章節獲取代碼。

開發和運行環境

  • 開發工具:
  • 前端框架: 我用了 vue3 的模式開發
  • 前端延伸能力:
  • 運行環境:一加8(安卓手機)

需求收集

看到論壇上有人想在 App端 實現 連續掃碼 功能。

認真看了下圖,還是個 半屏 的掃碼框。

 

只是看到提(ti)了下需求,并沒搜到多少(shao)解(jie)決方(fang)案。

于是我去 看了下,找到相關的內(nei)容:

<camera> 組件不支持 App 端使用(至少在寫(xie)本文(wen)時不支(zhi)持(chi));

uni.scanCode 可(ke)以掃碼(ma),但會跳(tiao)到另(ling)一個界面,并在(zai)全屏的模式(shi)下掃碼(ma),也不(bu)支持連(lian)續掃碼(ma)。

當然,用 uni.scanCode 可以在掃碼(ma)成功后再(zai)重新(xin)執(zhi)行一(yi)次(ci),這樣就能實現連續掃碼(ma)的功能,但界面會跳(tiao)來跳(tiao)去(跳(tiao)到掃碼(ma)界面,成功后又(you)跳(tiao)回app的界面,再(zai)執(zhi)行又(you)跳(tiao)到掃碼(ma)界面......)。

提煉需求

根據上(shang)面的信息,提(ti)煉出3個關鍵詞(ci):

  • App端
  • 半屏
  • 連續掃碼

我采用了 DCLOUD社區 里的(de)需求。粗略的(de)寫了下布局(ju)(我沒(mei)有精細寫樣式)

最終實(shi)現的(de)效果如(ru)下圖所示

003.gif

我(wo)用在線(xian)工具生成了(le)2個二維碼,內容分別為 “雷(lei)猴(hou)” 和(he) “鯊魚辣椒(jiao)”。

通過掃描二維碼,把內容添加到(dao)頁面(mian)中。

實現思路

查文檔

既然 uni-app 的組件和API 都沒有提(ti)供這方面的幫助(zhu),我就去 看了下(xia),要么(me)只(zhi)支持小程序,要么(me)是(shi)收費(fei)的。

收費的??????? 算了,大家都(dou)是打工人。

現在 uni-app 官(guan)方(fang)文檔 和(he) 插件市場 兩條(tiao)路都(dou)走(zou)不通(tong)(主要是(shi)我窮),那還有一(yi)條(tiao)路:

node.js 可以理解為前端向服務端的延展, html5+ 可以理解為前端向 App 的延展。

為了不浪費大家時間,我整理出本(ben)文要用到的 API 和 模塊。

打開(kai) 可以找到(dao) ,該模(mo)塊有(you)個 用來創建掃(sao)碼識(shi)別控件。

plus.barcode.create() 方法又需要用到 plus.webview ,也就是會涉及到 。

是用來管理應用窗口界面的,也就可以弄一(yi)個(ge)半屏的窗口出來。

整理

相(xiang)關(guan)方法都找到七七八八了,只需把(ba)邏輯整(zheng)理好就(jiu)可以(yi)編碼(ma)了。

  1. 【步驟1】弄一個窗口出來(半屏,或者你自己定個尺寸和定位吧)
  2. 【步驟2】弄一個掃碼控件對象出來
  3. 【步驟3】將掃碼控件添加到窗口
  4. 【步驟4】掃碼成功后將結果添加到頁面上
  5. 【步驟5】重新調用掃碼方法

動手實現

我將(jiang)上(shang)面(mian)5個步驟都在(zai)代碼注釋(shi)里標(biao)記出來了。

<template>
  <view class="page">
    <view class="title">掃碼結果</view>
	<view class="result_list">
	  <view v-for="item in list" :key="item" class="result_li">
		{{ item }}
	  </view>
	</view>
  </view>
</template>

<script setup>
import { onReady } from '@dcloudio/uni-app'
import { ref } from 'vue'

let webView = null // webview容器
let barcode = null // 掃碼框

const list = ref([]) // 掃碼結果 - 列表

// 掃碼成功回調
function onmarked(type, result) {
  // 【步驟4】將掃碼結果添加到 list 里
  list.value.push(result)

  // 【步驟5】1秒后再重新開啟掃碼
  setTimeout(() => {
	barcode.start()
  }, 1000)
}

// 創建窗口和掃碼控件
function createBarcode() {
  // 【步驟1】判斷有沒有創建過 webview 容器,如果沒有就執行創建操作
  if (!webView) {
    webView = plus.webview.open(
	  '',
	  'barCodeBox',
	  {
		top: '60px',
		width: '100%',
		height: '200px'
	  }
	)
  }

  // 【步驟2】判斷有沒有創建過 掃碼框,如果沒有就執行創建操作
  if(!barcode){
	barcode = plus.barcode.create(
	  'barcode',
	  [plus.barcode.QR], // 只掃二維碼
	  {
		top:'0px',
		left:'0px',
		width: '100%',
		height: '200px',
		position: 'static',
		scanbarColor: '#f1c01f',
		frameColor: '#c0ff01'
	  }
	)

	barcode.onmarked = onmarked // 掃碼結果回調函數

    // 【步驟3】將掃碼框添加到 webview 里
	plus.webview.getWebviewById('barCodeBox').append(barcode)
  }

  barcode.start() // 開始掃碼
}

// 在頁面加載時,延遲300毫秒執行創建掃碼框函數
onReady(() => {
  setTimeout(() => {
	createBarcode()
  }, 300)
})
</script>

<style>
.page {
  height: 100vh;
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
  padding: 200px 20rpx 0;
}

.title {
  font-size: 50rpx;
  color: #333;
}

.result_list {
  flex: 1;
  overflow-y: auto;
  box-sizing: border-box;
  padding-top: 20rpx;
}

.result_li {
  box-sizing: border-box;
  margin-bottom: 20rpx;
  padding: 10rpx 20rpx;
  border: 1px solid #7298c8;
  border-radius: 10rpx;
  font-size: 40rpx;
}
</style>

樣(yang)式我沒(mei)寫得很精細,只是做了個粗糙的(de)布局。

相關文檔

前端佬使用 uni-app 開發 App端 ,建(jian)議粗(cu)略過一(yi)遍 ,然后(hou)抽(chou)幾(ji)個自己感(gan)興趣的功能(neng)做個demo出來(這樣能(neng)省(sheng)錢,插件(jian)市(shi)場的東西也不便宜)。

掃碼相關

plus.barcode.create 的第二個(ge)參數是一個(ge)數組,里面可以設置(zhi)需要識別的條(tiao)碼(ma)類型,可以同時支持多種(zhong)條(tiao)碼(ma)。

barcode 支持多種條碼:

  • : QR二維碼,數值為0
  • : EAN條形碼標準版,數值為1
  • : ENA條形碼簡版,數值為2
  • : Aztec二維碼,數值為3
  • : Data Matrix二維碼,數值為4
  • : UPC條形碼標準版,數值為5
  • : UPC條形碼縮短版,數值為6
  • : Codabar條形碼,數值為7
  • : Code39條形碼,數值為8
  • : Code93條形碼,數值為9
  • : Code128條形碼,數值為10
  • : ITF條形碼,數值為11
  • : PDF 417二維條碼,數值為13

我們在(zai)本例中主要用(yong)到(dao) 方法(fa)創(chuang)建掃碼控(kong)件。

本文只(zhi)用(yong)(yong)了(le) ,在你的(de)業務中可能還需要用(yong)(yong)到 。

更多的(de)(de)配置和樣式設置,建(jian)議自行查閱官方(fang)文(wen)檔。本文(wen)的(de)(de)案例也(ye)有對掃碼框做了(le)顏色的(de)(de)調整(zheng)(隨便選了(le)個顏色)。

本文轉載于:

//juejin.cn/post/7072621583939928077

如果對您有所幫助,歡迎您點個關注,我會定時更新技術文檔,大家一起討論學習,一起進步。

 

posted @ 2023-02-03 16:32  林恒  閱讀(1114)  評論(0)    收藏  舉報