gpt4 book ai didi

android - Android 2.2 问题上的 Bitmap.createBitmap()

转载 作者:太空狗 更新时间:2023-10-29 16:25:15 24 4
gpt4 key购买 nike

我已经在 HTC Desire with Android 2.2 上测试了我的游戏。游戏是 2D 的,具有带有多个位图图像(帧)的自定义 Sprite 。使用方法 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 设备上会绘制所有 Sprite 帧。看起来上面提到的方法在创建位图框架时忽略了参数 startX、startY、width、height。
关于这个问题有什么线索吗?

最佳答案

好的,我找到了解决这个问题的方法。让我解释一下出现问题的地方:我注意到我的图 block 没有与 Sprite 相同的问题,即使它们是以相同的方式创建的。这是因为对于平铺图像我没有使用透明度。结论是:
如果您使用的是纯位图图像
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)

关于android - Android 2.2 问题上的 Bitmap.createBitmap(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3476016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com