你好。我正在Android平台上开发游戏应用程序。这是我的第一次安卓开发体验。我的游戏将实现精灵图形。我有 8 位格式的精灵,并为每个精灵系列定义了调色板。我需要将此精灵加载到 android.graphics.Bitmap 对象中。现在我像这样实现它:
int [] pixels = new int[spriteWidth * spriteHeight];
//here i'm filling pixels array
//... pixels[x,y] = myPalette[colorIndex];
Bitmap.createBitmap(spriteWidth, spriteHeight, Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixelsArray, 0, spriteWidth, 0, 0, spriteWidth, spriteHeight);
它工作得很好,但由于我指定了 ARGB_8888,我被迫为每个像素使用 4 个字节,所以我担心内存使用。
我的问题是:有没有办法用索引颜色创建 8 位位图,为其定义调色板并定义每个像素颜色索引?
PS 我注意到,如果我手动形成字节流,包含适当的 bmp 标头、调色板和像素数据,那么我可以使用以下方法正确加载它:
BitmapFactory.decodeStream(bmpStream);
这是我的第二个问题:如果我以这种方式加载图像,在内存使用方面会比上述解决方案更有效吗?或者也许 bitmapFactory 使用自己的内部例程将我的流解码为相同的每像素 32 位格式?
非常感谢任何帮助。对不起,我的英语不好。