我的应用中有以下代码。在这里,我基本上是灰度位图。通过模糊图像获得模糊的位图。
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_8888final Bitmap resultBitmap = Bitmap.createBitmap(blurred.getWidth(), blurred.getHeight(), Bitmap.Config.ARGB_8888);
现在使用RGB_565
解决了问题,但生成的位图看起来并不像ARGB_8888
那样好看。
我的问题是,这是让ARGB_8888在这些设备上运行的一种方法。如果没有,是否有办法检查是否支持ARGB_8888
,以便我可以在此类设备上回退到RGB_565
。在此先感谢!!
答案 0 :(得分:0)
因为 ARGB_8888 使用 4字节(32位)的颜色,因此某些设备 Android 版本级别较小将无效。
您可以检查resultBitmap是否为null,然后再使用RGB_565。