BitmapFactory.decodeResource()忽略inScaled

时间:2016-02-22 19:45:59

标签: android graphics android-bitmap

当inJustDecodeBounds也是“true”时,似乎BitmapFactory.decodeResource()忽略inScaled。

在这段代码中:

Resources res = getResources ();
DisplayMetrics metrics = res.getDisplayMetrics ();

BitmapFactory.Options options = new BitmapFactory.Options ();
options.inScaled = true;
options.inDensity = DisplayMetrics.DENSITY_HIGH; // resolution of bitmap in resources
options.inTargetDensity = metrics.densityDpi; // screen resolution

options.inJustDecodeBounds = true;
Bitmap bitmap = BitmapFactory.decodeResource (res, srcId, options);
logD ("IVH decodeBitmapResource.1: " + options.outWidth + "," + options.outHeight + " - " + srcId);

options.inJustDecodeBounds = false;
bitmap = BitmapFactory.decodeResource (getResources(), srcId, options);
logD ("IVH decodeBitmapResource.2: " + options.outWidth + "," + options.outHeight + " - " + srcId);

我在日志文件中得到以下输出:

IVH decodeBitmapResource.1: 420,747 - 2130837613
IVH decodeBitmapResource.2: 840,1494 - 2130837613

我所做的只是将JustDecodeBounds从true更改为false。我错过了什么?

1 个答案:

答案 0 :(得分:1)

也许答案应该是显而易见的:inJustDecodeBounds应该忽略所有其他指令,甚至是缩放。

以下代码,将inJustDecodeBounds设置为" true"解决了这个问题:

sed

那就是说,来吧谷歌。您已获得此API中的所有代码;你为什么让我改写它只需提供一个不同的标志,除了渲染位图之外,它还可以执然后,使用一个标志,我可以计算边界,并通过翻转标志,渲染一个完全适合的位图。