在我的Moto E上,我希望我的预览是全屏的,因此我通过覆盖onMeasure将纹理视图的尺寸设置为全屏,即540*960,但是使用camera2 api,我得到的预览尺寸的最接近匹配是768*432,具有相同的纵横比。Google sample建议“最初,从Camera2应用程序接口输出的流图像将从传感器的方向旋转到本机设备方向,TextureView将默认缩放这些缓冲区以填充其视图边界。如果纵横比和相对方向正确,这是很好的。”但即使是在原生方向上,我也得到了紧张的预览。即使我setTransform到标识矩阵,我也不知道预览如何自动缩放以填满整个屏幕。
发布于 2017-09-13 15:08:03
我也遇到了这个问题,并这样解决了它:
重新设置表面视图参数(宽度和高度)。
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);
}
});https://stackoverflow.com/questions/41862663
复制相似问题