我正在研究Android的脸部检测应用程序(我的设备是带有Android 4.1.2的Nexus S)。我的SurfaceView大小自动设置为800x480,但我的最大相机分辨率为720x480。我试图在其onLayout()方法中更改SurfaceView的大小,但是我在预览中缺少80px。是否可以拉伸或至少使CameraPreview居中?
由于
答案 0 :(得分:2)
可以使用Camera.Parameters更改CameraPreview大小。 但我建议将surfaceview放在屏幕的中心。 这是代码。 我没有执行代码,但它可能有效。
// Center the child SurfaceView within the parent.
final int width = r - l;
final int height = b - t;
if (width * previewHeight > height * previewWidth) {
final int surfaceViewWidth = previewWidth * height / previewHeight;
surfaceView.layout((int)((width - surfaceViewWidth)*0.5), 0, (int)((width + surfaceViewWidth)*0.5), height);
} else {
final int surfaceViewHeight = previewHeight * width / previewWidth;
surfaceView.layout(0, (int)((height - surfaceViewHeight)*0.5), width, (int)((height + surfaceViewHeight)*0.5));
}
答案 1 :(得分:0)
如果还有其他人遇到此问题-使相机预览居中的方法是使用FrameLayout:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/surfacecontainer">
<android.view.SurfaceView
android:id="@+id/cameraPreview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"/>
</FrameLayout>