因此,在我的应用程序中,我显示的摄像头预览不会占据整个屏幕。我正在手动设置显示,但是图像纵横比不正确。我将显示宽度设置为当前屏幕尺寸的一半。然后,我想相对于宽度设置高度,并保持正确的图像纵横比。如何在保持正确比例的同时设置相机预览高度?
最佳答案
The AOSP Camera uses a PreviewFrameLayout
作为SurfaceView
预览的包装。他们根据从setAspectRatio()
中选择的预览尺寸的高宽比在PreviewFrameLayout
上调用Camera
,然后PreviewFrameLayout
相应地缩放SurfaceView
。
由于PreviewFrameLayout
是开源的,因此没有什么像我在this one中所做的那样阻止您将其克隆到自己的项目中。
因此,根据您的情况,您可以将PreviewFrameLayout
设置为所需的最大尺寸(“当前屏幕尺寸的一半”,我希望您使用LinearLayout
和android:layout_weight
完成此操作) ,教它长宽比,将SurfaceView
放在PreviewFrameLayout
中,您应该会很好。
请注意,您应该能够在android:layout_gravity
上将SurfaceView
设置为在PreviewFrameLayout
中居中。