在我的Moto E上,我希望我的预览是全屏的,因此我将纹理视图的尺寸设置为全屏,即540 * 960by覆盖onMeasure,但使用camera2 api,我得到的预览尺寸最接近的匹配是768 * 432具有相同的纵横比。 Google示例表明“最初,来自Camera2 API的输出流图像将从传感器的方向旋转到本机设备方向,而TextureView将默认缩放这些缓冲区以填充其视图边界。如果纵横比和相对方向是没错,这很好。“但即使在本土方向,我也会受到延伸的预测。即使我将setTransform设置为Identity矩阵,我也不知道预览是如何自动缩放以填充整个屏幕的。
答案 0 :(得分:0)
我也遇到了这个问题并解决了这个问题:
重新设置surfaceview参数(宽度和高度)。
ViewTreeObserver observer = mSurfaceView.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
{
FrameLayout.LayoutParams surfaceParams = (FrameLayout.LayoutParams) mSurfaceView.getLayoutParams();
surfaceParams.height = screenHeight;
surfaceParams.width = screenWidth;
mSurfaceView.setLayoutParams(surfaceParams);
mSurfaceView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
});