因此,在我的应用程序中,我显示的摄像头预览不会占据整个屏幕。我正在手动设置显示,但是图像纵横比不正确。我将显示宽度设置为当前屏幕尺寸的一半。然后,我想相对于宽度设置高度,并保持正确的图像纵横比。如何在保持正确比例的同时设置相机预览高度?

最佳答案

The AOSP Camera uses a PreviewFrameLayout作为SurfaceView预览的包装。他们根据从setAspectRatio()中选择的预览尺寸的高宽比在PreviewFrameLayout上调用Camera,然后PreviewFrameLayout相应地缩放SurfaceView

由于PreviewFrameLayout是开源的,因此没有什么像我在this one中所做的那样阻止您将其克隆到自己的项目中。

因此,根据您的情况,您可以将PreviewFrameLayout设置为所需的最大尺寸(“当前屏幕尺寸的一半”,我希望您使用LinearLayoutandroid:layout_weight完成此操作) ,教它长宽比,将SurfaceView放在PreviewFrameLayout中,您应该会很好。

请注意,您应该能够在android:layout_gravity上将SurfaceView设置为在PreviewFrameLayout中居中。

07-24 09:45