2010-08-13 86 views
2

我已經通過Android 2.2在HTC Desire上測試了我的遊戲。遊戲是2D自定義的精靈與多個位圖圖像(幀)。幀使用方法Bitmap.createBitmap()從一個放大圖像生成:

bitmapFrames[currentFrame][0] = Bitmap.createBitmap(image, startX, startY, width, height, matrix, true);
Android 2.2問題上的Bitmap.createBitmap()

它作品確定在Android 1.5和1.6的設備。它也適用於所有模擬器(1.5,1.6,2.1和2.2),但在真正的HTC Desire設備上繪製所有的精靈幀。它看起來像上面提到的方法在創建位圖幀時忽略參數startX,startY,width,height。
關於這個問題的任何線索?

+0

你沒有提供足夠的信息,任何人都可以提供幫助。 – stealthcopter 2010-08-13 13:40:17

回答

6

好的,我找到了解決這個問題的辦法。讓我解釋發生問題的位置: 我注意到我的貼圖與精靈並不存在相同的問題,即使它們是以相同的方式創建的。這是因爲對於平鋪圖像,我沒有使用透明度。結論是:
如果您使用固體位圖圖像
bmpImage.getConfig() == Config.RGB_565
那麼上述方法工作正常。但是,如果你使用的是透明
bmpImage.getConfig() == Config.ARGB_8888
則方法
Bitmap.createBitmap(image, startX, startY, width, height, matrix, true);
總是返回全位圖圖像,而不是隻是其中的一部分。此問題僅在Android 2.2真實設備上存在。

解決方案:
我不得不manualy到的顏色值從源圖像複製,並使用下面的方法,使用INT []顏色值的部件幀:

  • Bitmap.getPixels()

  • System.arraycopy()

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

+0

對我來說,這個問題只存在於HTC Desire上。其他2.2設備工作正常。 – Twilite 2012-03-02 18:59:19