我一直在使用来自谷歌的 camera2 api 演示,不幸的是,示例应用程序被构建为在屏幕高度的大约 70% 处显示纹理视图预览,环顾四周后,我能够确定这是由 AutoFitTextureView 覆盖引起的onMeasure()
方法如下图:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
if (0 == mRatioWidth || 0 == mRatioHeight) {
setMeasuredDimension(width, height);
} else {
if (width < height * mRatioWidth / mRatioHeight) {
setMeasuredDimension(width, width * mRatioHeight / mRatioWidth);
} else {
setMeasuredDimension(height * mRatioWidth / mRatioHeight, height);
}
}
}
我试图通过在 中设置正确的高度和宽度来纠正这个setMeasuredDimension(width, height);
问题,这解决了高度问题并从纹理视图给了我一个全屏预览,但是纵横比在每台设备上都完全被破坏和扭曲,什么是标准的修复方法这个?我看到 Play 商店中的许多应用程序都找到了解决此问题的方法,但无法找到修复程序,任何帮助都会有很大帮助,谢谢。