【发布时间】:2016-03-01 18:40:45
【问题描述】:
我有一个用于条形码扫描的 SurfaceView(this tutorial)。
<SurfaceView
android:id="@+id/camera_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
需要将裁剪后的相机预览设置为屏幕高度的 1/4。
我根据屏幕尺寸设置了视图尺寸:
cameraView = (SurfaceView) findViewById(R.id.camera_view);
final DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(metrics.widthPixels, metrics.heightPixels / 4);
cameraView.setLayoutParams(layoutParams);
但是相机预览只是缩小了!
我是这样设置的
final BarcodeDetector barcodeDetector =
new BarcodeDetector.Builder(this)
.setBarcodeFormats(Barcode.ALL_FORMATS)
.build();
final CameraSource cameraSource = new CameraSource
.Builder(this, barcodeDetector)
.setRequestedPreviewSize(metrics.widthPixels, metrics.heightPixels / 4)
.setAutoFocusEnabled(true)
.build();
cameraView.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
cameraSource.start(cameraView.getHolder());
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
cameraSource.stop();
}
});
如何裁剪相机预览?只需要底部的 1/4 部分。
还需要添加一个透明层,上面有矩形取景器。
【问题讨论】:
标签: android android-camera surfaceview