Android Lollipop的位图解码问题

时间:2015-03-09 15:50:02

标签: android android-5.0-lollipop bitmapfactory

我在Lollipop设备中解码图像时遇到问题。

下图显示了一个"测试应用",它解码了4个png文件。

左= kitkat 4.4.4,右= lollypop(5.0.1)

两种设备类型相同:MOTO G 2nd Generation。

enter image description here

相关代码

Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
options.inDither = true;
options.inScaled = true;
options.inDensity = 160;
options.inTargetDensity = 320;
Bitmap bmp = BitmapFactory.decodeStream(new ByteArrayInputStream(imageAsBytes), null, options);

屏幕指标:

Density......: 2
ScaledDensity: 2
DensityDPI...: 320
Size.........: 720x1184

我在网上找到了任何解释。

任何人都可以指出为什么会发生这种情况?

修改

由于它仅在棒棒糖+ TargetDensity = 320 +密度= 160时发生,我做了以下解决方法:

if ((android.os.Build.VERSION.SDK_INT >= 21) && (options.inTargetDensity == 320) && (options.inDensity = 160))
{
    options.inDensity = options.inTargetDensity;
}

但是我真的很感激一些提示,以便弄清楚它是怎么回事......

1 个答案:

答案 0 :(得分:0)

在我的案例中,解决方案是(添加setDensity并使用查看Density的新BitmapDrawable)。希望它也能帮到你。 (顺便说一句。这2行,确实花了我3天的时间:)。

 final Bitmap output = Bitmap.createBitmap(44, 65, Bitmap.Config.ARGB_8888);

 /*NEW -> */ output.setDensity(320);

 final Canvas canvas = new Canvas(output);
 final int color = Color.RED;
 final Paint paint = new Paint();

 // BitmapDrawable bmd = new BitmapDrawable(output);
 /*Change into*/
 BitmapDrawable bmd = new BitmapDrawable(Resources.getSystem(),output);