当我使用依赖项compile 'me.dm7.barcodescanner:zxing:1.9'
而无法访问zxing文件时,如何更改取景器的大小,颜色和其他选项?
我找不到解决这个问题的方法。
答案 0 :(得分:1)
您可以通过XML
完成<com.journeyapps.barcodescanner.BarcodeView
android:id="@+id/zxing_barcode_surface"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:zxing_framing_rect_height="220dp"
app:zxing_framing_rect_width="250dp" />
<com.journeyapps.barcodescanner.ViewfinderView
android:id="@+id/zxing_viewfinder_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:zxing_possible_result_points="@color/zxing_custom_possible_result_points"
app:zxing_result_view="@color/zxing_custom_result_view"
app:zxing_viewfinder_laser="@color/zxing_custom_viewfinder_laser"
app:zxing_viewfinder_mask="@color/zxing_custom_viewfinder_mask" />
如果您想以编程方式更改行为,请检查this post(可能与此问题重复)和another one。
要访问库功能,需要将以下内容添加到build.gradle文件中:
repositories {
jcenter()
}
dependencies {
compile 'me.dm7.barcodescanner:zxing:1.9.3'
}
并为您的AndroidManifest.xml文件添加相机权限:
<uses-permission android:name="android.permission.CAMERA" />
答案 1 :(得分:1)
更改ViewFinder的颜色。 将这些添加到项目的colors.xml
<color name="viewfinder_mask">#3F51B5</color>
<color name="viewfinder_laser">#00FFFFFF</color>
<color name="viewfinder_border">#ffFF4081</color>
进行其他更改,例如从ZXingScannerView的取景器中移除激光 创建一个类并扩展ViewFinderView。覆盖方法以自定义UI 像这样。
public class CustomScannerView extends ZXingScannerView {
public CustomScannerView(Context context) {
super(context);
}
@Override
protected IViewFinder createViewFinderView(Context context) {
return new CustomViewFinderView(context);
}
//make changes in CustomViewFinderView to customise the Viewfinder
//Check ViewFinderView class for more modifications
//to change viewFinder's colours override appropriate values in Colors.xml
class CustomViewFinderView extends ViewFinderView {
public CustomViewFinderView(Context context) {
super(context);
setSquareViewFinder(true);
DisplayMetrics displayMetrics = new DisplayMetrics();
((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
// DEFAULT SQUARE DIMENSION RATIO in ViewFinderView is 0.625
// get appropriate Dimension ratio otherwise
float width = displayMetrics.widthPixels * 0.625f;
setBorderLineLength((int)width);
}
@Override
public void drawLaser(Canvas canvas) {
//do nothing for no laser, even remove super call
}
}
}
设置取景器的矩形 使用
super.getFramingRect().set(left, top, right, bottom);