0

我在通过 android.renderscript.Allocation 加载动画 GIF 时遇到困难。这是有缺陷的代码:

Bitmap out = Bitmap.createBitmap(src.getWidth(), src.getHeight(), Bitmap.Config.ARGB_8888);
mInAllocation = Allocation.createFromBitmap(mRS, src,
            Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT);

它在运行 Android 4.2 的 Nexus 4 上运行良好,但在运行 Android 4.1 的 Optimus G 上失败。抛出的异常是:

E/AndroidRuntime(8398): Caused by: android.renderscript.RSInvalidStateException: Bad bitmap type: null

这是从 Allocation.typeFromBitmap 抛出的,因为 src.getConfig 返回 null;即使我使用以下代码专门创建它:

BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
bitmapOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap photo = BitmapFactory.decodeByteArray(data, 0, data.length, bitmapOptions);
4

1 回答 1

1

呃,这是我们在 4.3 开发过程中发现并解决的错误(在 4.3 和支持库中)。本质上,Bitmap.Config 将为任何索引位图返回 NULL。我不知道为什么 4.2 没有失败,因为我不记得在那里修复过(你确定 N4 不在 4.3 上吗?)。

毫不奇怪,最简单的解决方法是:如果可以,请使用支持库。它包含修复。

于 2013-10-21T17:04:49.943 回答