我有一个if-else场景,if-path使用这段代码:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
options.inPurgeable = true;
options.inInputShareable = true;
bitmap = BitmapFactory.decodeResource(getResources(), resourceId, options);
而else-path使用此代码:
InputStream is = getContentResolver().openInputStream(Uri.fromFile(file));
BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
options.inPurgeable = true;
options.inInputShareable = true;
bitmap = BitmapFactory.decodeStream(is, null, options);
现在对我来说,阅读API的简短描述,测试和谷歌搜索我无法弄清楚差异,但似乎有一个简单的。
当应用于ImageView时,第一段代码会缩放以适合屏幕的宽度(在ScrollView中的RelativeLayout内)。第二段代码没有,这是我的问题。它似乎也以某种方式放宽了它的宽高比,因为如果我申请:
imageView.setAdjustViewBounds(true);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
它设法使其适合宽度,但会弄乱高度(使其比应有的短)。 非常感谢任何输入!
(我已经尝试更改第一段代码,看看我是否搞砸了其他内容,但是if-path的重写给出了同样的错误:)
BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
options.inPurgeable = true;
options.inInputShareable = true;
bitmap= BitmapFactory.decodeStream(getResources().openRawResource(resourceId), null, options);