android camera分辨率设置,请问如何使用camera2设置全屏preview,要求适配所有屏幕尺寸?...
官方demo中的TextureView中重寫(xiě)了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);
}
}
}
這段代碼使得TextureView在寬高都不超過(guò)手機(jī)屏幕的情況下最大化顯示。
解決方案是,讓TextureView總是達(dá)到最大邊界,超出部分不進(jìn)行預(yù)覽(實(shí)際上還是能拍到的)。代碼如下:
@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) { //注意這里騷操作,替換"小于號(hào)"為"大于號(hào)"
setMeasuredDimension(width, width * mRatioHeight / mRatioWidth);
} else {
setMeasuredDimension(height * mRatioWidth / mRatioHeight, height);
}
}
}
實(shí)際上就是把判斷條件中的 "" 即可,天知道這一小段代碼害慘多少程序員。。
總結(jié)
以上是生活随笔為你收集整理的android camera分辨率设置,请问如何使用camera2设置全屏preview,要求适配所有屏幕尺寸?...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 乳胶漆怎么会开裂?
- 下一篇: mate40pro什么时候用鸿蒙,mat