【发布时间】:2021-01-13 10:40:17
【问题描述】:
我正在尝试在 SurfaceView 上创建一个相机视图,它被放置在一个带有 ScrollView 的对话框中。但是在滚动完成之前,相机视图会与布局重叠。我已经尝试了一些解决方案,但仍然无法克服这个问题。我原以为只需将基本布局放在前面或将相机视图(SurfaceView)放在后面即可解决,但它仍然无法解决问题。 这是我的代码:
DisplayMetrics displayMetrics = new DisplayMetrics();
((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int width = displayMetrics.widthPixels;
int width2 = (int) (0.82 * width);
int width3 = (int) (0.82 * width);
LinearLayout lay = uiExtTools.baselayout(context);
RelativeLayout relativeParent = new RelativeLayout(context);
relativeParent.setLayoutParams(new RelativeLayout.LayoutParams(
width3,
width2));
relativeParent.setPadding(20,20,20,5);
SurfaceView cameraView = new SurfaceView(context);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT
);
params.addRule(RelativeLayout.CENTER_VERTICAL);
params.addRule(RelativeLayout.CENTER_HORIZONTAL);
cameraView.setLayoutParams(params);
cameraView.setPadding(20,20,20,20);
relativeParent.addView(cameraView);
lay.addView(relativeParent);
BarcodeDetector barcodeDetector = new BarcodeDetector.Builder(context)
.setBarcodeFormats(Barcode.ALL_FORMATS)
.build();
CameraSource cameraSource = new CameraSource.Builder(context,barcodeDetector)
.setRequestedPreviewSize(1600,1024)
.setAutoFocusEnabled(true)
.build();
cameraView.getHolder().addCallback(new SurfaceHolder.Callback() {
@SuppressLint("MissingPermission")
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
cameraSource.start(cameraView.getHolder());
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
cameraSource.stop();
}
});
任何帮助或建议都会很棒
【问题讨论】:
标签: android surfaceview