基于ZXing库封装的扫一扫控件,一分钟让你的app拥有条形码,二维码扫描功能,还支持自定义界面以及闪光灯开关,赶紧搬起来吧!
一、使用方法
1、封装的扫描控件
<com.moral.qrcodelib.view.ZXingView
android:id="@+id/zxingview"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_below="@+id/top"
android:layout_weight="1"
app:qrcv_animTime="1000"
app:qrcv_barCodeTipText="将条码放入框内,即可自动扫描"
app:qrcv_barcodeRectHeight="140dp"
app:qrcv_borderColor="@android:color/white"
app:qrcv_borderSize="1dp"
app:qrcv_cornerColor="@color/colorPrimaryDark"
app:qrcv_cornerLength="20dp"
app:qrcv_cornerSize="3dp"
app:qrcv_customScanLineDrawable="@mipmap/scan_icon_scanline"
app:qrcv_isBarcode="false"
app:qrcv_isCenterVertical="false"
app:qrcv_isOnlyDecodeScanBoxArea="false"
app:qrcv_isScanLineReverse="true"
app:qrcv_isShowDefaultGridScanLineDrawable="false"
app:qrcv_isShowDefaultScanLineDrawable="true"
app:qrcv_isShowTipBackground="true"
app:qrcv_isShowTipTextAsSingleLine="false"
app:qrcv_isTipTextBelowRect="false"
app:qrcv_maskColor="#33FFFFFF"
app:qrcv_qrCodeTipText="将二维码/条码放入框内,即可自动扫描"
app:qrcv_rectWidth="200dp"
app:qrcv_scanLineColor="@color/colorPrimaryDark"
app:qrcv_scanLineMargin="0dp"
app:qrcv_scanLineSize="0.5dp"
app:qrcv_tipTextColor="@android:color/white"
app:qrcv_tipTextSize="12sp"
app:qrcv_toolbarHeight="16dp"
app:qrcv_topOffset="90dp" />
2、继承扫描回调接口
public interface Delegate {
/**
* 处理扫描结果
*
* @param result
*/
void onScanQRCodeSuccess(String result);
/**
* 处理打开相机出错
*/
void onScanQRCodeOpenCameraError();
}
3、开启扫描
mQRCodeView.startCamera();
mQRCodeView.changeToScanBarcodeStyle();
//开始条形码扫描
mQRCodeView.showScanRect();
//二维码扫描
//mQRCodeView.changeToScanQRCodeStyle();
//开启闪光灯
//mQRCodeView.openFlashLight();
mQRCodeView.startSpot();
上图看看:
二维码:
条形码:
二、简要原理
1、UI主要是自定义View,每个元素(四个角、框线,遮罩,扫描线)都是canvas画的,扫描线的来回移动,是使用postInvalidateDelayed实现的,老司机具体看代码吧。
2、至于功能方便的,是基于Zxing的库,你们都懂。
3、关于6.0以上权限请求的,使用easyPermission库,具体看代码,哈哈
代码传送:
https://github.com/shuijilove/ZXingCodeDemo
还可参考:
https://github.com/dm77/barcodescanner
https://github.com/bingoogolapple/BGAQRCode-Android
网友评论