我在Lollipop设备中解码图像时遇到问题。
下图显示了一个"测试应用",它解码了4个png文件。
左= kitkat 4.4.4,右= lollypop(5.0.1)
两种设备类型相同:MOTO G 2nd Generation。
相关代码:
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;
}
但是我真的很感激一些提示,以便弄清楚它是怎么回事......
答案 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);