1. 程式人生 > >React Native 二維碼掃描元件(簡單,易用!)

React Native 二維碼掃描元件(簡單,易用!)

1前言

最近用 React Native 仿寫了一下 ofo 應用,涉及到了二維碼掃描的功能,在 github 上搜了一下,也沒發現一個趁手的二維碼掃描元件,所以乾脆自己動手寫了一個。

其中使用攝像頭實時掃描二維碼進行解析的功能,已經通過 react-native-camera 這個庫實現了,所以我也只是寫了一個可以自定義樣式的掃描介面,為了使用方便,我已經將其封裝成元件,上傳到了 NPM 伺服器,下面就大概說一下實現過程以及使用方法。

2特性

  • 相容 RN0.4.0+ 的版本

  • 相容 Android 和 iOS 平臺

  • 支援二維碼、條形碼掃描

  • 輕鬆實現各種掃描介面

3截圖預覽

1707-0.jpg.gif

Twitter


1708-640.jpg.jpg

WeChat

1709-640.jpg.jpg

QQBrowser

1710-640.jpg.jpg

ofo

1711-640.jpg.jpg

4安裝

//第一步
npm install ac-qrcode --save
//第二步(react-native-camera 需要 link 後才能使用)
react-native link
PS:如果 link 沒有成功,會報錯。如果沒有自動 link,可以手動 link

5基本使用

import {QRScannerView} from 'ac-qrcode'; export default class DefaultScreen extends Component {     render() {        return (            < QRScannerView                

onScanResultReceived                        ={this.barcodeReceived.bind(this)}                renderTopBarView                         ={() => this._renderTitleBar()}                renderBottomMenuView                         ={() =>  this._renderMenu()}            />        )    }
   _renderTitleBar(){        return(            <Text                style={{color:'white',                                 textAlignVertical:'center',                                 textAlign:'center',                                 font:20,padding:12}}            >這裡新增標題</Text>        );    }    _renderMenu() {        return (            <Text                style={{color:'white',                              textAlignVertical:'center',                              textAlign:'center',                              font:20,padding:12}}            >這裡新增底部選單</Text>        )    } barcodeReceived(e) {        Toast.show('Type: ' + e.type +             '\nData: ' + e.data);} }

6基本屬性

1712-640.jpg.jpg

屬性名 預設值 描述
maskColor #0000004D 遮罩顏色
borderColor #000000 邊框顏色
cornerColor #000000 轉角顏色
borderWidth 0 邊框寬度
cornerBorderWidth 4 轉角寬度
cornerBorderLength 20 轉角長度
rectHeight 200 掃描狂高度
rectWidth 200 掃描狂寬度
isCornerOffset false 轉角是否偏移
cornerOffsetSize 0 轉角偏移量
bottomMenuHeight 0 底部操作選單高度
scanBarAnimateTime 2500 掃描線移動速度
scanBarColor #22ff00 掃描線顏色
scanBarImage null 使用圖片掃描線
scanBarHeight 1.5 掃描線高度
scanBarMargin 6 掃描線距掃描狂邊距
hintText 將二維碼/條碼放入框內,即可自動掃描 提示文字
hintTextStyle { color: '#fff', 
fontSize: 14,

backgroundColor:

'transparent'}

提示文字樣式
hintTextPosition 130 提示文字位置
isShowScanBar true 是否顯示掃描條
bottomMenuStyle - 底部選單樣式
renderTopBarView - 繪製頂部操作條元件
renderBottomMenuView - 繪製底部操作條元件
onScanResultReceived - 掃描結果回撥

8實現簡述

掃描介面可以分為 4 個部分:頂部標題欄,底部操作欄,遮罩層,掃描框。其中頂部標題欄和底部操作欄都是通過暴露方法讓使用者自己新增的。只有遮罩層和掃描框是傳入引數進行設定的。上一張圖大概說一下整個介面結構。

1713-640.jpg.jpg

元件程式碼結構如下,基本是通過使用絕對定位的 View 實現的佈局

<View>    <Camera>        {/*頂部標題欄*/}        <TopBarView />        <View>            {/*掃描框部分*/}            <View>                {/*掃描框邊線*/}                <View>                    {/*掃描條及動畫*/}                    <Animated.View />                </View>                {/*掃描框轉角-左上*/}                <View />                {/*掃描框轉角-右上*/}                <View />                {/*掃描框轉角-左下*/}                <View />                {/*掃描框轉角-右下*/}                <View />            </View> {/*遮罩-*/}            <View />            {/*遮罩-*/}            <View />            {/*遮罩-*/}            <View />            {/*遮罩-*/}            <View />            {/*提示文字*/}            <HintTextView />        </View>        {/*底部操作欄*/}        <BottomMenuView />    </Camera> </View>

詳細程式碼比較長,就不一一列出來解釋了。主要也比較簡單,感覺沒啥好說的,就是通過計算元件在螢幕上的座標位置,進行對應的大小設定而已。感興趣的可以直接跳轉到 github 去看,地址在這裡:https://github.com/MarnoDev/AC-QRCode-RN

順便提醒一下,因為目前還沒有進行優化,所以開啟掃碼介面的速度感覺會有一些慢,後面有時間會對這些細節進行優化的,具體可以關注我的公眾號獲取,或者留意下後面我在 github 倉庫的更新。

相關推薦

React Native 掃描元件(簡單)

1前言 最近用 React Native 仿寫了一下 ofo 應用,涉及到了二維碼掃描的功能,在 github 上搜了一下,也沒發現一個趁手的二維碼掃描元件,所以乾脆自己動手寫了一個。 其中使用攝像頭實時掃描二維碼進行解析的功能,已經通過 react-native-camera 這個庫實現了,所以我也只是寫

自定義 React Native 掃描元件(簡單)

本文為 Marno 原創,轉載必須保留出處! 公眾號 aMarno,關注後回覆 RN 加入交流群 1.前言 最近用 React Native 仿寫了一下 ofo 應用,涉及到了二維碼掃描的功能,在 github 上搜了一

最完善,快速的 react-native 掃描

react-native 二維碼掃描 先看效果 使用的開源庫 安裝 npm install react-native-smart-barcode --save npm install react-native-smar

React Native 掃描 react-native-camera的使用

npm install [email protected]://github.com/lwansbrough/react-native-camera.git --savereact-native link react-native-camera import

react-native-smart-barcode目前最好掃描元件(IOS、android)

最近在製作React-Native專案的時候,條碼識別給我們整個專案帶了不少麻煩,幾款主流的條碼識別元件都不是特別好用,使用者體驗比較差,比如二維碼識別速度慢、掃描頁面十分卡頓用等一系列問題,後來在網上無意間找到一個非常好用的二維碼掃描元件——react-native-smart-barcode,這個元件是

智慧門禁+掃描模組方案自動感應掃開門更智慧

一、方案概述: 智慧門禁+二維碼掃描模組方案,是以廣泛普及的手機為載體的二維碼門禁應用去代替實體門禁卡,通過硬解碼掃描頭和系統相結合,來拓展智慧門禁自動感應讀取顯示在手機上的門禁APP二維碼(動態碼),以達到自動感應掃碼開門的功能。從科技潮流來看,硬解二維碼模組滿足了智慧門禁、通道閘機掃描二維碼開門的需求,

React Native實現掃描

依賴包匯入步驟 詳細步驟可看github上的說明,簡要記錄如下: 1. npm install react-native-camera –save 2. react-native link react-native-camera android手動l

簡單實現掃描

文章是我轉載的哦,一片楓葉_劉超大神寫的好棒,謝謝分享,原文地址http://blog.csdn.net/qq_23547831/article/details/52037710#reply 本文將講解一下我最近寫的一個快速整合二維碼掃描庫,這裡需要說明的是其核心的實現

iOS掃描 原生API 原始碼Demo 2016最新版本 簡單

iOS中的二維碼掃描,ZXing, ZBar庫不更新了,本博主,所以今天寫了一個二維碼掃描庫,是最新版本的,相容iOS7.0及以後的系統,主要用Objective-C寫的現測試已完美通過Xcode 7.

Android 基於zxing的掃描功能的簡單實現及優化

由於專案中需要接入一下簡單的二維碼掃描功能,最終使用 zxing 來實現,把官方例子中的部分程式碼摘除出來做了簡單的封裝,並進行了一些優化。這裡簡單做一個記錄。 掃描二維碼 Android 中關於二維碼掃描的庫有很多,但是歸根到底無外乎下面這幾種

簡單使用系統的裝置實現掃描

這裡我用了系統的東西簡單的實現了一下掃描二維碼 .h #import <UIKit/UIKit.h> #import <AVFoundation/AVFoundation.h> @interface saoMiaoViewController :

【QRCodeView】更專注的 Android 掃描的控制元件

前言 QRCodeView 基於 Google 的 zxing 進行二次開發,簡化二維碼的相關操作、優化識別速度。由於整個 zxing 框架中不僅包含了二維碼識別相關的程式碼,還包括其他格式如條形碼等等的程式碼,體量較大,實際開發中一般只需要使用二維碼,故本

IOS 使用 ZbarSDK 掃描

fill 下載 src uitext void del symbols per super 1. 下載SDK https://github.com/bmorton/ZBarSDK 2. 引用到項目中 3. 添加引用 4. AppDelegate中添加下面代碼 5.

ZBar 是款桌面電腦條形碼/掃描工具

進行 output app 新版本 import 系統安裝 安裝文件 window eating ZBar 是款桌面電腦用條形碼/二維碼掃描工具 windows平臺python 2.7環境編譯安裝zbar 最近一個項目需要識別二維碼,找來找去找到了zbar和zxin

Swift AVFoundation 掃描和生成

size ram post nserror out 捕獲 一個 白色 art 項目最終不須要支持iOS6了(淚崩),在二維碼掃描這一塊,可以全然的放棄ZXing庫,改用系統的AVFoundation了,拿swift寫了個Demo,效果例如以下: git

Zxing掃描

ram zxing oss lean 預覽 surface ott serial pac 源代碼地址 有問題能夠加QQ:312122330 之前對於Zbar的二位碼掃描。到項目上線以後才發現掃描過於靈敏。導致有時候掃描到半截就啟動了。 後來翻看ZXIN

iOS掃描

ont 代碼 畫面 告訴 nds ima dds rst bounds 每一步:添加 AVFoundation.framework 庫 General > Linked Frameworks and Libraries 第二步:代碼集成 #import "V

基於Zxing的掃描之橫屏掃描

ews name pla eight 網上 HA 如果 log 簡單的 最近項目條碼掃描要改為橫屏,網上所搜了一下,然後發現我寫的需要改動幾行代碼就可以了,還是很給力的。 如未查看之前的代碼,請移步: 基於Zxing的二維碼生成和二維碼掃描 修改下面寫代碼就可以實現橫

關於掃描的開發,遇到的問題,以及最終結果

無效 () 我不 ont 操作 res 手機 clas 什麽 近期發現之前我使用的zxing二維碼掃描速度較慢,自己不是很滿意,但是找了很久沒有好的優化方式,研究了一段時間(與其說是研究,不如說找相關資料改某動) 這裏有如下幾點內容需要註意下面也是我二維碼優化之旅遇到的問題

java學習-zxing生成矩陣的簡單例子

map obj 基於 The output 圖片 .get imageio sts 這個例子需要使用google的開源項目zxing的核心jar包 core-3.2.0.jar 可以百度搜索下載jar文件 也可使用maven添加依賴 <de