2017-05-05 62 views
1

我使用这个库https://github.com/dm77/barcodescanner为我的应用程序。一切正常。但我想做一些修改,使扫描条形码的区域更小。我想调整区域扫描的大小。此图像显示区域扫描的默认大小。 enter image description here如何使扫描条码区使用库Zbar更小android

盒子区域扫描。我怎样才能让它更小的箱子面积或调整大小?对不起,我还没有修改代码,因为我坚持如何调整它。

我想要左侧的图像不是1.较小的高度比图像没有2(右侧)。对于宽度是好的,没关系。仅适用于身高。 enter image description here

+0

你想让它变成方形吗? – Piyush

+0

库没有这种方法来调整扫描仪视图的大小。 –

+0

@Piyush我想让高度更小。你看到图像中的红线?也许我想要的顶部和红线之间的高度..意味着比默认小..你明白我的意思了吗? –

回答

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); 
} 

onCreate()方法调用。

+0

谢谢先生。我已经实现你的代码,但没有任何改变。 –

+0

哪个价值我需要玩它来调整? –

+0

https://stackoverflow.com/a/47591098/2820534在您提供的提示帮助下实现 – Prabs