所以在我的应用程序中,我正在显示一个不占用整个屏幕的相机预览。我正在手动设置显示,但我得到的图像纵横比不正确。我将显示宽度设置为当前屏幕尺寸的一半。然后我想设置与宽度相关的高度并保持正确的图像纵横比。如何在保持正确比例的同时设置相机预览高度?
问问题
572 次
2 回答
3
AOSP 相机使用 aPreviewFrameLayout
SurfaceView
作为预览的包装器。他们根据从 中选择的预览大小的纵横比调用setAspectRatio()
,PreviewFrameLayout
并Camera
相应地PreviewFrameLayout
缩放SurfaceView
。
由于PreviewFrameLayout
是开源的,没有什么能阻止你将它克隆到你自己的项目中,就像我在这个.
因此,在您的情况下,您将 设置PreviewFrameLayout
为所需的最大尺寸(“当前屏幕尺寸的一半”,我希望您使用LinearLayout
and来完成android:layout_weight
),教它纵横比,把SurfaceView
在中PreviewFrameLayout
,你应该很高兴。
请注意,您应该能够将 设置为android:layout_gravity
在SurfaceView
中居中PreviewFrameLayout
。
于 2013-06-24T00:02:22.843 回答
0
我用这个解决了这个问题
private Camera.Size getBestPreviewSize(int width, int height)
{
Camera.Size result=null;
Camera.Parameters p = camera.getParameters();
for (Camera.Size size : p.getSupportedPreviewSizes()) {
if (size.width<=width && size.height<=height) {
if (result==null) {
result=size;
} else {
int resultArea=result.width*result.height;
int newArea=size.width*size.height;
if (newArea>resultArea) {
result=size;
}
}
}
}
return result;
}
于 2013-07-09T02:02:30.493 回答