Android:位图配置ARGB_8888无法在某些设备上运行

时间:2016-05-30 10:31:24

标签: android android-bitmap

我的应用中有以下代码。在这里,我基本上是灰度位图。通过模糊图像获得模糊的位图。

    final Bitmap resultBitmap = Bitmap.createBitmap(blurred.getWidth(), blurred.getHeight(), Bitmap.Config.ARGB_8888);

    final Canvas c = new Canvas(resultBitmap);

    c.drawBitmap(blurred, 0, 0, null);

    final Paint p = new Paint();
    p.setAlpha(127);

    c.drawBitmap(Bitmap.createBitmap(linearLayout.getWidth(), linearLayout.getHeight(), Bitmap.Config.RGB_565), 0, 0, p);
    BitmapDrawable background = new BitmapDrawable(getResources(), resultBitmap);
    linearLayout.setBackground(background);

此代码在所有设备上都按预期工作,但在Micromax E313上我没有得到所需的结果。经过一些调试后,我发现问题是在行

中使用了ARGB_8888
final Bitmap resultBitmap = Bitmap.createBitmap(blurred.getWidth(), blurred.getHeight(), Bitmap.Config.ARGB_8888);

现在使用RGB_565解决了问题,但生成的位图看起来并不像ARGB_8888那样好看。

我的问题是,这是让ARGB_8888在这些设备上运行的一种方法。如果没有,是否有办法检查是否支持ARGB_8888,以便我可以在此类设备上回退到RGB_565。在此先感谢!!

1 个答案:

答案 0 :(得分:0)

因为 ARGB_8888 使用 4字节(32位)的颜色,因此某些设备 Android 版本级别较小将无效。

您可以检查resultBitmap是否为null,然后再使用RGB_565。