二维码框架Zxing的使用及自定义

本文介绍了如何在Android中使用ZXing框架进行二维码扫描,并详细讲解了如何自定义扫描界面以实现竖屏扫描,以及如何在同一个页面进行多次扫描,无需更改源码。通过配置Gradle、集成ZXing、创建自定义Activity并重写相关方法,实现了对二维码扫描的全面定制。
摘要由CSDN通过智能技术生成

项目需要一个二维码扫描功能

image

关于二维码的扫描,我之前就听说过ZXing了(虽然从来没用过)

所以既然这次要用它了,自然是得搜索一番资料咯。

在开始介绍之前,我先说一下我的使用情况吧,网上的博客里面基本上都把Zxing框架自己封装了,或者在教程中需要添加library然后修改源文件。否则你就无法自定义ZXing,并且你还会遇到某些问题——比如二维码扫描图片是横屏的。

幸运的是这些问题我都遇到了!!!

image

还好,我花了几个小时,终于是解决了上面这些问题,不用更改源码,也是可以对二维码扫描页面自定义的。

首先,贴上ZXing的android端GitHub地址:

zxing-android-embedded

好吧,接下来就开始介绍如何使用了。

一、ZXing框架的集成

在你的项目的根目录下的build.gradle中需要配置这个:

repositories {
    jcenter()
}

然后是app目录下的build.gradle,配置如下:

dependencies {
    compile('com.journeyapps:zxing-android-embedded:3.6.0') { transitive = false }
    compile 'com.android.support:appcompat-v7:25.3.1'   //如果V7已经配置过,那就不要重复添加了
    compile 'com.google.zxing:core:3.3.0'
}

下面在AndroidManifest.xml中添加,表示开启硬件加速,其实没必要,因为一般硬件加速都是默认开启的

  <application android:hardwareAccelerated="true" ... >

二、ZXing框架的使用

配置完成后就可以使用了。

使用的方式非常简单,在github的说明文档中,仅仅需要一行代码就可以打开二维码的扫描界面了:

new IntentIntegrator(this).initiateScan();

可以在一个Button的点击事件中添加这行代码,然后你只需要在当前的Activity中重写onActivityResult去获取结果就ok了。

不过。。。

image

如果你以为事情真的那么简单那你就大错特错了,下面我们看一下扫码的页面:

这里写图片描述

看完以上页面你会冒出两个问题:

1.要如何去自定义扫码界面?
2.怎么把界面竖过来?

好了,接下来就着手去准备解决这两个问题!

1、自定义扫码界面

在ZXing的github说明文档有提到过如何去自定义界面:

这里写图片描述

官方的建议是看例子,然后看源码。

下面是介绍如何去自定义扫描界面的文档地址:

DecoratedBarcodeView

之前有提到过ZXing配置好后一行代码就可以开启二维码扫描页面,在知道如何自定义界面之前我们可以了解一下这一行代码是怎么打开扫描页面的。

new IntentIntegrator(this).initiateScan();

上面的代码中,this就是当前Activity的引用,而IntentIntegrator类中的initiateScan()方法其实就是调用了startActivityForResult()方法:

    public final void initiateScan() {
        startActivityForResult(createScanIntent(), requestCode);
    }

上面方法中的createScanIntent()返回一个从当前Activity跳转到另外一个Activity的Intent

    public Intent createScanIntent() {
        Intent intentScan = new Intent(activity, getCaptureActivity());
        ...
        return intentScan;
    }</
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值