分辨率的过滤问题总体思路分为三步,
1、首先要读取底层所支持的所有分辨率,与上层支持的分辨率比较;
2、然后过滤当前尺寸比例的分辨率;
3、最后与上层已经过滤一次的分辨率再比较(我觉得第三步是不是多余的???)。
主要代码如下:
if (pictureSize != null && pictureRatio != null) {
//第一步:
filterUnsupportedOptionsForPictureSize(group, pictureSize, sizeListToStringList(
mParameters.getSupportedPictureSizes()), false,
SettingChecker.ROW_SETTING_PICTURE_SIZE);
//第二步:
List<String> supportedForRatio = buildSupportedPictureSize(mContext, mParameters, pictureRatio.getValue());
//第三步:
filterDisabledOptions(group, pictureSize, supportedForRatio, false,
SettingChecker.ROW_SETTING_PICTURE_SIZE);
}
在第一步中,mParameters.getSupportedPictureSizes() 是用来获取底层所支持的分辨率,然后用函数sizeListToStringList()将其转化为String型。然后进入函数filte