学rn得朋友们,你们知道rn开源项目吗?来吧看这里:http://www.marno.cn/(rn开源项目)

React Native学习之路(9) - 注册登录验证的实现 + (用Fetch实现post请求) + (倒计时验证码)+(父子组件通信)+(asyncStorage异步存储) +(TextInput文本输入框):http://www.jianshu.com/p/7c81e122276b

ReactNative学习笔记七之图表组件交互(上):http://www.jianshu.com/p/b103a83d7840

React Native之ListView实现九宫格效果:http://blog.csdn.net/xiangzhihong8/article/details/53572824

1.前言

最近用 React Native 仿写了一下 ofo 应用,涉及到了二维码扫描的功能,在 github 上搜了一下,也没发现一个趁手的二维码扫描组件,所以干脆自己动手写了一个。

其中使用摄像头实时扫描二维码进行解析的功能,已经通过 react-native-camera 这个库实现了,所以我也只是写了一个可以自定义样式的扫描界面,为了使用方便,我已经将其封装成组件,上传到了 NPM 服务器,下面就大概说一下实现过程以及使用方法。

2.特性

  • 兼容 RN0.4.0+ 的版本
  • 兼容 Android 和 iOS 平台
  • 支持二维码、条形码扫描
  • 轻松实现各种扫描界面

3.截图预览

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:,padding:}}
>这里添加标题</Text>
);
} _renderMenu() {
return (
<Text
style={{color:'white',textAlignVertical:'center', textAlign:'center',font:,padding:}}
>这里添加底部菜单</Text>
)
} barcodeReceived(e) {
Toast.show('Type: ' + e.type + '\nData: ' + e.data);
//console.log(e)
}
}

6.属性列表

属性名 类型 默认值 可选 描述
maskColor string 0000004D true 遮罩颜色
borderColor string 000000 true 边框颜色
cornerColor string 000000 true 转角颜色
borderWidth number 0 true 边框宽度
cornerBorderWidth number 4 true 转角宽度
cornerBorderLength number 20 true 转角长度
rectHeight number 200 true 扫描狂高度
rectWidth number 200 true 扫描狂宽度
isCornerOffset bool false true 转角是否偏移
cornerOffsetSize number 0 true 转角偏移量
bottomMenuHeight number 0 true 底部操作菜单高度
scanBarAnimateTime number 2500 true 扫描线移动速度
scanBarColor string 22ff00 true 扫描线颜色
scanBarImage any null true 使用图片扫描线
scanBarHeight number 1.5 true 扫描线高度
scanBarMargin number 6 true 扫描线距扫描狂边距
hintText string 将二维码/条码放入框内,即可自动扫描 true 提示文本
hintTextStyle object { color: ‘#fff’, fontSize: 14,backgroundColor:’transparent’} true 提示文字样式
hintTextPosition number 130 true 提示文字位置
isShowScanBar bool true true 是否显示扫描条
bottomMenuStyle object - true 底部菜单样式
renderTopBarView func - flase 绘制顶部操作条组件
renderBottomMenuView func - false 绘制底部操作条组件
onScanResultReceived func - false

7.实现简述

扫描界面可以分为 4 个部分:顶部标题栏,底部操作栏,遮罩层,扫描框。其中顶部标题栏和底部操作栏都是通过暴露方法让用户自己添加的。只有遮罩层和扫描框是传入参数进行设置的。上一张图大概说一下整个界面结构。

组件代码结构如下,基本是通过使用绝对定位的 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 实战】二维码扫描

    1.前言今天介绍React Native来实现二维码扫描的功能.首先我们要借助第三方插件react-native-barcode-scanner-universal来实现跨平台二维码扫描. 2.介绍 ...

  2. jQuery和react实现二维码

    jq如何生成二维码 代码如下: 1.jquery.qrcode生成二维码代码 <!DOCTYPE html> <html> <head> <script ch ...

  3. 免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)

    在生活中有一种东西几乎已经快要成为我们的另一个电子”身份证“,那就是二维码.无论是在软件开发的过程中,还是在普通用户的日常中,几乎都离不开二维码.二维码 (dimensional barcode) , ...

  4. DotNet二维码操作组件ThoughtWorks.QRCode

    DotNet二维码操作组件ThoughtWorks.QRCode 在生活中有一种东西几乎已经快要成为我们的另一个电子"身份证",那就是二维码.无论是在软件开发的过程中,还是在普通用 ...

  5. H5混合开发二维码扫描以及调用本地摄像头

    今天主管给了我个需求,说要用混合开发,用H5调用本地摄像头进行扫描二维码,我之前有做过原生安卓的二维码扫一扫,主要是通过调用zxing插件进行操作的,其中还弄了个闪光灯.但是纯H5的没接触过,心里没底 ...

  6. Android集成二维码扫描功能

    文章转载自  https://github.com/yipianfengye/android-zxingLibrary 在具体介绍该扫描库之前我们先看一下其具体的使用方式,看看是不是几行代码就可以集成 ...

  7. XAMARIN ANDROID 二维码扫描示例

    现在二维码的应用越来越普及,二维码扫描也成为手机应用程序的必备功能了.本文将基于 Xamarin.Android 平台使用 ZXing.Net.Mobile  做一个简单的 Android 条码扫描示 ...

  8. [Unity3D]自制UnityForAndroid二维码扫描插件

    一周左右终于将二维码生成和扫描功能给实现了,终于能舒缓一口气了,从一开始的疑惑为啥不同的扫码客户端为啥扫出来的效果不同?通用的扫描器扫出来就是一个下载APK,自制的扫描器扫出来是想要的有效信息,然后分 ...

  9. 有关iOS系统中调用相机设备实现二维码扫描功能的注意点(3/3)

    今天我们接着聊聊iOS系统实现二维码扫描的其他注意点. 大家还记得前面我们用到的输出数据的类对象吗?AVCaptureMetadataOutput,就是它!如果我们需要实现目前主流APP扫描二维码的功 ...

随机推荐

  1. opencv2函数学习之blur,GaussianBlur,medianBlur和bilateralFilter:实现图像平滑处理

    在opencv2中,可能使用blur对图像进行平滑处理,这种方法就是最简单的求平均数. 平滑 也称 模糊, 是一项简单且使用频率很高的图像处理方法. 平滑处理的用途有很多, 但是在很多地方我们仅仅关注 ...

  2. ubuntu安装ruby的几种方法总结

    1.apt-get安装 可以使用apt-cache查询功能,找到对应的可用的ruby版本. $ sudo apt-cache search ruby #这个结果很长,我只截取最后与ruby有关的部分 ...

  3. SpringMVC+FreeMarker+Mybatis 整合

    这个项目自己有时写写测试代码什么的, 代码比较简单,代码已放在 github : https://github.com/zhouyongtao/homeinns-web 目录结构: 贴一下Maven的 ...

  4. dispatchEvent相关内容

    意思就是:手动触发事件. 我的理解是:类似于jquery中的trigger方法,可以在点击某个dom的时候,触发另一个dom的事件,下面一个我自己尝试的例子: <!DOCTYPE html> ...

  5. mongodb操作技巧

    1.添加字段或更新值 db.getCollection('test').updateMany( {}, { $set:{ 'createTime':'2017-06-29 08:08', 'updat ...

  6. PBN旁切转弯保护区组图

    旁切转弯是PBN(Performance Based Navigation基于性能导航)中使用频率最高的一种飞行方式,旁切转弯保护区支持最大120°的转弯. 旁切转弯保护区叠加图: 旁切转弯保护区分解 ...

  7. WPF 中Canvas图形移动、缩放代码

    从Flash转C#,很多内容一知半解,边摸索边前进,代码粗糙,权当留个脚印. 只是想得到一个基础的移动和缩放功能的界面,找了很久都是画线.画矩形等基础形状的代码,移动和缩放说的并不清晰,只能自己努力来 ...

  8. POJ 2785 4 Values whose Sum is 0(暴力枚举的优化策略)

    题目链接: https://cn.vjudge.net/problem/POJ-2785 The SUM problem can be formulated as follows: given fou ...

  9. Java maven项目的小随笔

    1.web.xml里面有filter拦截设置,注意. 2.编译之后,网页中读取资源的路径是apache-tomcat/wtpwebapps/..,若该路径下没有相应资源,则报404错误.

  10. Docker基础-镜像操作

    1.搜寻镜像 docker search [TERM] 可以搜索远程仓库中共享的镜像,默认搜索官方仓库的镜像. docker search参数: --automated=true|false :仅显示 ...