当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。我错过了什么?
答案 0 :(得分:1)
也许答案应该是显而易见的:inJustDecodeBounds应该忽略所有其他指令,甚至是缩放。
以下代码,将inJustDecodeBounds设置为" true"解决了这个问题:
sed
那就是说,来吧谷歌。您已获得此API中的所有代码;你为什么让我改写它只需提供一个不同的标志,除了渲染位图之外,它还可以执然后,使用一个标志,我可以计算边界,并通过翻转标志,渲染一个完全适合的位图。