BitmapFactory.decodeResource和BitmapFactory.decodeStream之间的差异

时间:2012-04-23 01:08:57

标签: android bitmap imageview scaling

我有一个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);

0 个答案:

没有答案