2017-05-05 91 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