在ZXing

时间:2015-11-30 11:03:39

标签: android zxing

我有一个Android应用程序,我正在通过ZXings库扫描条形码。我已将其集成到我的Android应用程序构建中,因此用户不再需要单独安装ZXing Barcode应用程序。

我可以完美地扫描和处理结果和取消。但是,为了使应用程序对用户更直观,我想在扫描页面上添加“取消”或“后退”按钮。

我通过互联网搜索了found this blog。该博客称,ZXing更新了他们的库,使定制变得更容易,但是,customization seems a bit limited from what the GitHub page shows并没有太多关于如何自定义UI的示例。

该博客还显示了后退/取消按钮的选项,但the GitHub link seems broken并未指向任何位置。

是否有人尝试并成功设法使用自定义UI布局进行ZXing扫描?

2 个答案:

答案 0 :(得分:0)

作为class comment said

  

要自定义UI,请直接使用BarcodeView和ViewfinderView。

     

BarcodeView是ViewGroup,因此您可以添加子项/取消button s

答案 1 :(得分:0)

主要问题是大多数博客中链接的自定义布局都已失效。 I found a working link here.基本上,我们要做的是提供自定义布局文件并通过以下方式使用它:

IntentIntegrator integrator = new IntentIntegrator(this);
integrator.setCaptureLayout(R.layout.custom_capture_layout);

//do more things here if you want

integrator.initiateScan();

它将使用您提供的自定义布局。以防上述链接死亡,这是我使用的代码:

<?xml version="1.0" encoding="UTF-8"?>
<!--
 Copyright (C) 2008 ZXing authors
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
      http://www.apache.org/licenses/LICENSE-2.0
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 -->
<merge xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <SurfaceView android:id="@+id/zxing_preview_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>

    <com.google.zxing.client.android.ViewfinderView
        android:id="@+id/zxing_viewfinder_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>

    <LinearLayout android:id="@+id/zxing_result_view"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@color/zxing_result_view"
        android:visibility="gone"
        android:baselineAligned="false">

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:padding="@dimen/zxing_standard_padding">

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:gravity="right|center_vertical">

                <ImageView android:id="@+id/zxing_barcode_image_view"
                    android:layout_width="160dip"
                    android:layout_height="wrap_content"
                    android:maxWidth="160dip"
                    android:maxHeight="160dip"
                    android:layout_marginBottom="@dimen/zxing_half_padding"
                    android:adjustViewBounds="true"
                    android:scaleType="centerInside"
                    tools:ignore="ContentDescription"/>

                <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">

                    <TextView android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/zxing_msg_default_format"
                        android:textColor="@color/zxing_result_minor_text"
                        android:textStyle="bold"
                        android:paddingRight="@dimen/zxing_half_padding"/>

                    <TextView android:id="@+id/zxing_format_text_view"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="@color/zxing_result_minor_text"/>

                </LinearLayout>

                <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">

                    <TextView android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/zxing_msg_default_type"
                        android:textColor="@color/zxing_result_minor_text"
                        android:textStyle="bold"
                        android:paddingRight="@dimen/zxing_half_padding"/>

                    <TextView android:id="@+id/zxing_type_text_view"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="@color/zxing_result_minor_text"/>

                </LinearLayout>

                <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">

                    <TextView android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/zxing_msg_default_time"
                        android:textColor="@color/zxing_result_minor_text"
                        android:textStyle="bold"
                        android:paddingRight="@dimen/zxing_half_padding"/>

                    <TextView android:id="@+id/zxing_time_text_view"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="@color/zxing_result_minor_text"/>

                </LinearLayout>

                <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">

                    <TextView android:id="@+id/zxing_meta_text_view_label"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/zxing_msg_default_meta"
                        android:textColor="@color/zxing_result_minor_text"
                        android:textStyle="bold"
                        android:paddingRight="@dimen/zxing_half_padding"/>

                    <TextView android:id="@+id/zxing_meta_text_view"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="@color/zxing_result_minor_text"/>

                </LinearLayout>

            </LinearLayout>

            <ScrollView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">

                    <TextView android:id="@+id/zxing_contents_text_view"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="@color/zxing_result_text"
                        android:textColorLink="@color/zxing_result_text"
                        android:textSize="22sp"
                        android:paddingLeft="12dip"
                        android:autoLink="web"
                        android:textIsSelectable="true"/>

                    <TextView android:id="@+id/zxing_contents_supplement_text_view"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="@color/zxing_result_text"
                        android:textColorLink="@color/zxing_result_text"
                        android:paddingLeft="12dip"
                        android:autoLink="web"
                        android:textIsSelectable="true"/>

                </LinearLayout>

            </ScrollView>

        </LinearLayout>

        <LinearLayout android:id="@+id/zxing_result_button_view"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center">

            <Button style="@style/zxing_ResultButton"
                android:visibility="gone"/>

            <Button style="@style/zxing_ResultButton"
                android:visibility="gone"/>

            <Button style="@style/zxing_ResultButton"
                android:visibility="gone"/>

            <Button style="@style/zxing_ResultButton"
                android:visibility="gone"/>

        </LinearLayout>

    </LinearLayout>

    <LinearLayout
        android:layout_gravity="bottom|center_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView android:id="@+id/zxing_status_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|center_horizontal"
            android:background="@color/zxing_transparent"
            android:text="@string/zxing_msg_default_status"
            android:textColor="@color/zxing_status_text"/>

        <Button android:id="@id/zxing_back_button"
            android:layout_marginTop="10dp"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:height="60dp"
            android:textAlignment="center"
            android:layout_gravity="bottom|center_horizontal"
            android:text="@string/zxing_button_cancel"/>

    </LinearLayout>

</merge>

我只是复制粘贴它,根本没有自定义。启动扫描时,它有一个“取消”按钮。我希望这可以帮助任何遇到死链接的人。