React Native 二维码扫描组件
学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,可以手动 link5.基本使用
- 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 二维码扫描组件的更多相关文章
- 【React Native 实战】二维码扫描
1.前言今天介绍React Native来实现二维码扫描的功能.首先我们要借助第三方插件react-native-barcode-scanner-universal来实现跨平台二维码扫描. 2.介绍 ...
- jQuery和react实现二维码
jq如何生成二维码 代码如下: 1.jquery.qrcode生成二维码代码 <!DOCTYPE html> <html> <head> <script ch ...
- 免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
在生活中有一种东西几乎已经快要成为我们的另一个电子”身份证“,那就是二维码.无论是在软件开发的过程中,还是在普通用户的日常中,几乎都离不开二维码.二维码 (dimensional barcode) , ...
- DotNet二维码操作组件ThoughtWorks.QRCode
DotNet二维码操作组件ThoughtWorks.QRCode 在生活中有一种东西几乎已经快要成为我们的另一个电子"身份证",那就是二维码.无论是在软件开发的过程中,还是在普通用 ...
- H5混合开发二维码扫描以及调用本地摄像头
今天主管给了我个需求,说要用混合开发,用H5调用本地摄像头进行扫描二维码,我之前有做过原生安卓的二维码扫一扫,主要是通过调用zxing插件进行操作的,其中还弄了个闪光灯.但是纯H5的没接触过,心里没底 ...
- Android集成二维码扫描功能
文章转载自 https://github.com/yipianfengye/android-zxingLibrary 在具体介绍该扫描库之前我们先看一下其具体的使用方式,看看是不是几行代码就可以集成 ...
- XAMARIN ANDROID 二维码扫描示例
现在二维码的应用越来越普及,二维码扫描也成为手机应用程序的必备功能了.本文将基于 Xamarin.Android 平台使用 ZXing.Net.Mobile 做一个简单的 Android 条码扫描示 ...
- [Unity3D]自制UnityForAndroid二维码扫描插件
一周左右终于将二维码生成和扫描功能给实现了,终于能舒缓一口气了,从一开始的疑惑为啥不同的扫码客户端为啥扫出来的效果不同?通用的扫描器扫出来就是一个下载APK,自制的扫描器扫出来是想要的有效信息,然后分 ...
- 有关iOS系统中调用相机设备实现二维码扫描功能的注意点(3/3)
今天我们接着聊聊iOS系统实现二维码扫描的其他注意点. 大家还记得前面我们用到的输出数据的类对象吗?AVCaptureMetadataOutput,就是它!如果我们需要实现目前主流APP扫描二维码的功 ...
随机推荐
- Fragment中启动一个新的Activity
最近遇到一个小问题,就是我在主界面中用的是Fragment,其中四个Fragment,然后打算在其中一个里边,写一个TextView(准确地说是Linearout)的单击事件,然后跳转到另外一个Act ...
- JAVA NIO:Buffer.mark()的用法
在默认情况下,Buffer.mark()并没有什么用处,既不会影响Buffer的遍历,也不会影响Buffer的位置统计函数,如remaining()函数,能影响这些操作的行为只有position(). ...
- spring boot 与 自定义interceptor
前面学习过过滤器, 但是过滤器是针对servlet的, 用在springmvc和spring boot里面, 功能上, 感觉并不是很好用. 那这里来学习一下拦截器. 一. 拦截器的执行顺序 1. 目录 ...
- MVC源码分析 - Action查找和过滤器的执行时机
接着上一篇, 在创建好Controller之后, 有一个 this.ExecuteCore()方法, 这部分是执行的. 那么里面具体做了些什么呢? //ControllerBaseprotected ...
- Redhat6.8安装Oracle11g下遇到两个问题记录
问题一: 刚刚安装完毕Oracle之后,尝试sqlplus登陆报错,TNS:net service name is incorrectly specified 参考文章:关于环境变量ORACLE_SI ...
- AngularJS学习笔记(五)自定义指令(1)
先来说说自定义指令 ng通过内置指令的方式实现了对html的增强,同时也赋予了我们自定义指令的功能,让我们根据实际需求进行指令的定制.自定义指令涉及到模板(template).作用域(scope).数 ...
- 任意的组合,数组或数组,数组或list,list或list不用循环得出匹配的总数和需要的字段列
var res = list.Where(p=> list2.Any(x=>x.Id == p.Id));var count = res.Count();var ids = res.Sel ...
- Redis有序集合操作
有序集合存储着成员和分值之间的映射,并且提供了分值处理命令,以及根据分值大小有序的获取或扫描成员和分值的命令 (常用命令) ZADD : ZADD key-name score member [sco ...
- //{{AFX_MSG、//{{AFX_VIRTUAL、//{{AFX_MSG_MAP、//{{AFX_DATA_INIT
说明:这篇日志我不知道怎么命名好,虽然内容很少,但是讲的关键字很多,如果你有幸打开这篇日志,不妨往下看看 背景:我们使用 VC++6.0 开发MFC应用程序,初学者一定会为那么多行的注释代码感到头痛, ...
- Weex 学习文档、跳转路径、控制台输出、we转js汇总
最近在学习阿里的weex框架,网上教程真是不少,但是有用的确实是少的很.其中大多数都是讲如何配置移动端的,很少有讲到weex语法的.要知道,如果真需要用weex编写js页面的话,很有可能是移动端开发者 ...