gpt4 book ai didi

java - 具有正确宽高比的android textureview全屏预览

转载 作者:搜寻专家 更新时间:2023-10-30 21:04:11 25 4
gpt4 key购买 nike

我一直在使用 camera2 api demo from google不幸的是,示例应用程序被构建为在屏幕高度的大约 70% 处显示 textureview 预览,环顾四周后我能够确定这是由 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); 中设置正确的高度和宽度来纠正这个问题,这解决了高度问题并为我提供了来自 textureview 的全屏预览,但是方面比率在每台设备上都完全损坏和扭曲,修复此问题的标准方法是什么?我看到 Play 商店中的许多应用程序都找到了解决此问题的方法,但未能找到修复方法,任何帮助都会大有帮助,谢谢。

最佳答案

我能够通过切换 setMeasuredDimension() 来解决问题;

    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(height * mRatioWidth / mRatioHeight, height);
} else {
setMeasuredDimension(width, width * mRatioHeight / mRatioWidth);
}
}

关于java - 具有正确宽高比的android textureview全屏预览,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38535355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com