如何使用库Zbar扫描条码区域更小的android

时间:2017-05-05 07:45:42

标签: android resize barcode

我将此库<fo:static-content flow-name="xsl-region-after"> <fo:block text-align="right" font-size="20pt" margin-right="0.5cm"> <fo:page-number/></fo:block> </fo:static-content> 用于我的应用。一切都很好。但我想做一些修改,这是扫描条码的制作区域更小。我想调整区域扫描的大小。此图像显示区域扫描的默认大小。 enter image description here

框区域扫描。如何让它更小的盒子区域或调整大小?对不起,我还没有修改过的代码,因为我发现如何调整它的大小。

我想要左侧图像为1号。较小的高度与图像2号(右侧)相比较。宽度没问题,没关系。只是为了高度。 enter image description here

1 个答案:

答案 0 :(得分:2)

如果你想调整它的大小。请按照以下步骤操作:

1)在当前的xml文件中添加一个布局。

<RelativeLayout
    android:id="@+id/qr_scan_parent_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

</RelativeLayout>

2)在Java文件中查找相对布局的id并初始化它。

3)对于调整大小框,请使用CustomViewFinderView这是您的自定义类。

private static class CustomViewFinderView extends ViewFinderView {
    public final Paint PAINT = new Paint();

    public CustomViewFinderView(Context context) {
        super(context);
        init();
    }

    public CustomViewFinderView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    private void init() {
        PAINT.setColor(Color.WHITE);
        PAINT.setAntiAlias(true);
        setSquareViewFinder(true);
    }

    @Override
    public void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        drawTradeMark(canvas);
    }

    private void drawTradeMark(Canvas canvas) {
        Rect framingRect = getFramingRect();
        float tradeMarkTop;
        float tradeMarkLeft;
        if (framingRect != null) {
            tradeMarkTop = framingRect.bottom + PAINT.getTextSize() + 10;
            tradeMarkLeft = framingRect.left;
        } else {
            tradeMarkTop = 10;
            tradeMarkLeft = canvas.getHeight() - PAINT.getTextSize() - 10;
        }
        canvas.drawText("", tradeMarkLeft, tradeMarkTop, PAINT);
    }
}

4)现在将扫描仪视图添加到相对布局。

 private void addQRScanningView() {
    mScannerView = new ZXingScannerView(this) {
        @Override
        protected IViewFinder createViewFinderView(Context context) {
            return new CustomViewFinderView(context);
        }
    };
    relative_layout.addView(mScannerView);
}

并在addQRScanningView()方法中调用onCreate()