您好。我正在Android平台上开发游戏应用程序。这是我的第一次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位位图,为它定义调色板并定义每个像素颜色索引?
P.S。我注意到,如果我手动形成字节流,包含适当的bmp标题,调色板和像素数据,那么我可以使用以下方法正确加载它:
BitmapFactory.decodeStream(bmpStream);
这是我的第二个问题:如果我以这种方式加载图像,在内存使用方面它会比上面的解决方案更有效吗?或者也许bitmapFactory使用自己的内部例程将我的流解码为相同的32位/像素格式?
任何帮助非常感谢。对不起,我的英语不好。