android camera分辨率设置,请问如何使用camera2设置全屏preview,要求适配所有屏幕尺寸?...
官方demo中的TextureView中重寫了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在寬高都不超過手機屏幕的情況下最大化顯示。
解決方案是,讓TextureView總是達到最大邊界,超出部分不進行預覽(實際上還是能拍到的)。代碼如下:
@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);
}
}
}
實際上就是把判斷條件中的 "" 即可,天知道這一小段代碼害慘多少程序員。。
總結
以上是生活随笔為你收集整理的android camera分辨率设置,请问如何使用camera2设置全屏preview,要求适配所有屏幕尺寸?...的全部內容,希望文章能夠幫你解決所遇到的問題。