Android开发Android开发经验谈那些年爬过坑

Android 最好用的扫码框架 封装ZXing

2018-11-28  本文已影响13人  老去的九零后青年

之前项目中用到的扫码框架还是ZXing,嘻嘻 来到新公司之后 发现我们这个扫码框架是用的一个基于ZX ing封装的一个扫码框架 ,而且扫码的速度和准确率都比ZXing要强大的许多,因为要改其中的一个小功能 ,所以就研究了一下。QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式

下面就让我们开始吧  

首先给出原作者的git地址 

https://github.com/bingoogolapple/BGAQRCode-Android

效果图如下(这个是原作者的哦):

下面开始上代码了 我只用的Zxing

1.gradle中添加:

dependencies {

    implementation'cn.bingoogolapple:bga-qrcode-zxing:1.3.4'

}

这里我是用的最新的 因为用到了自定义的扫码格式

2.在布局文件中:

3.在Activity中使用

/**

* 延迟delay毫秒后开始识别

*/

mQRCodeView.startSpotDelay(800);

需要当前Activity实现QRCodeView.Delegate,ICaptureView;

implements QRCodeView.Delegate,ICaptureView;

这里面有两个回调方法  一个是扫描结果的回调  一个是否需要开启闪光灯

/** * 处理扫描结果 **@paramresult 摄像头扫码时只要回调了该方法 result 就一定有值,不会为 null。解析本地图片或 Bitmap 时 result 可能为 null*/

voidonScanQRCodeSuccess(Stringresult)

/** * 摄像头环境亮度发生变化 **@paramisDark 是否变暗*/

voidonCameraAmbientBrightnessChanged(booleanisDark);

/** * 处理打开相机出错*/

voidonScanQRCodeOpenCameraError()

自定义属性说明

属性名说明默认值

qrcv_topOffset    扫描框距离 toolbar 底部的距离90dp

qrcv_cornerSize    扫描框边角线的宽度3dp

qrcv_cornerLength    扫描框边角线的长度20dp

qrcv_cornerColor    扫描框边角线的颜色@android:color/white

qrcv_cornerDisplayType    扫描框边角线显示位置(相对于边框),默认值为中间center

qrcv_rectWidth    扫描框的宽度200dp

qrcv_barcodeRectHeight    条码扫样式描框的高度140dp

qrcv_maskColor    除去扫描框,其余部分阴影颜色#33FFFFFF

qrcv_scanLineSize    扫描线的宽度1dp

qrcv_scanLineColor    扫描线的颜色「扫描线和默认的扫描线图片的颜色」@android:color/white

qrcv_scanLineMargin    扫描线距离上下或者左右边框的间距0dp

qrcv_isShowDefaultScanLineDrawable    是否显示默认的图片扫描线「设置该属性后 qrcv_scanLineSize 将失效,可以通过 qrcv_scanLineColor 设置扫描线的颜色,避免让你公司的UI单独给你出特定颜色的扫描线图片」false

qrcv_customScanLineDrawable        扫描线的图片资源「默认的扫描线图片样式不能满足你的需求时使用,设置该属性后 qrcv_isShowDefaultScanLineDrawable、qrcv_scanLineSize、qrcv_scanLineColor 将失效」null

qrcv_borderSize    扫描边框的宽度1dp

qrcv_borderColor    扫描边框的颜色@android:color/white

qrcv_animTime    扫描线从顶部移动到底部的动画时间「单位为毫秒」1000

qrcv_isCenterVertical    (已废弃,如果要垂直居中用 qrcv_verticalBias="0.5"来代替)扫描框是否垂直居中,该属性为true时会忽略 qrcv_topOffset 属性false

qrcv_verticalBias    扫描框中心点在屏幕垂直方向的比例,当设置此值时,会忽略 qrcv_topOffset 属性-1

qrcv_toolbarHeightToolbar     的高度,通过该属性来修正由 Toolbar 导致扫描框在垂直方向上的偏差0dp

qrcv_isBarcode    扫描框的样式是否为扫条形码样式false

qrcv_tipText    提示文案null

qrcv_tipTextSize    提示文案字体大小14sp

qrcv_tipTextColor    提示文案颜色@android:color/white

qrcv_isTipTextBelowRect    提示文案是否在扫描框的底部false

qrcv_tipTextMargin    提示文案与扫描框之间的间距20dp

qrcv_isShowTipTextAsSingleLine    是否把提示文案作为单行显示false

qrcv_isShowTipBackground    是否显示提示文案的背景false

qrcv_tipBackgroundColor    提示文案的背景色#22000000

qrcv_isScanLineReverse    扫描线是否来回移动true

qrcv_isShowDefaultGridScanLineDrawable    是否显示默认的网格图片扫描线false

qrcv_customGridScanLineDrawable    扫描线的网格图片资源nulll

qrcv_isOnlyDecodeScanBoxArea    是否只识别扫描框中的码false

qrcv_isShowLocationPoint    是否显示定位点false

qrcv_isAutoZoom        码太小时是否自动缩放false

更多的使用请看作者的git地址  里面用更详细的讲解

上一篇下一篇

猜你喜欢

热点阅读