【问题标题】:Bitmap.createBitmap() on Android 2.2 issueAndroid 2.2 上的 Bitmap.createBitmap() 问题
【发布时间】:2010-08-13 10:31:09
【问题描述】:

我已经在 HTC Desire 上使用 Android 2.2 测试了我的游戏。游戏是 2D 的,带有多个位图图像(帧)的自定义精灵。使用方法 Bitmap.createBitmap() 从一张较大的图像生成帧:

bitmapFrames[currentFrame][0] = Bitmap.createBitmap(image, startX, startY, width, height, matrix, true);

它在 Android 1.5 和 1.6 设备上运行良好。它也适用于所有模拟器(1.5、1.6、2.1 和 2.2),但在真正的 HTC Desire 设备上,所有精灵帧都被绘制。看起来上面提到的方法在创建位图框时忽略了参数 startX、startY、宽度、高度。
关于这个问题的任何线索?

【问题讨论】:

  • 你没有提供足够的信息让任何人帮忙。

标签: android


【解决方案1】:

好的,我找到了解决这个问题的方法。让我解释一下问题出现在哪里: 我注意到我的图块没有与精灵相同的问题,即使它们是以相同的方式创建的。这是因为对于平铺图像我没有使用透明度。结论是:
如果您使用的是实心位图图像
bmpImage.getConfig() == Config.RGB_565
然后上述方法工作正常。但是,如果您使用透明度
bmpImage.getConfig() == Config.ARGB_8888
然后方法
Bitmap.createBitmap(image, startX, startY, width, height, matrix, true);
总是返回整个位图图像,而不是只返回一部分。此问题仅存在于 Android 2.2 真机上。

解决方案:
我不得不手动从源图像复制颜色值,并使用以下方法使用部分 int[] 颜色值创建帧:

  • Bitmap.getPixels()

  • System.arraycopy()

  • Bitmap.createBitmap(int[] colors, int width, int height, Bitmap.Config config)

【讨论】:

  • 对我来说这个问题只存在于 HTC Desire 上。其他 2.2 设备工作正常。
猜你喜欢
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-11
相关资源
最近更新 更多