2012-07-24 22 views
0

我有一個奇怪的行爲,我的應用程序更新到果凍豆的設備上。 這個遊戲做一個: canvas.drawBitmap(bitmap,locationX,locationY,null); 我的位圖可以是2尺寸:40x15和60x15。自從JellyBean以來,Canvas.drawBitmap中的錯誤?

在Jelly Bean設備上(我在Galaxy Nexus和Nexus S上試過),drawBitmap在使用60x15的位圖時沒有畫任何東西。如果我調整到40x15,它工作正常。

我沒有任何問題與較低版本的android。

在此先感謝!

+0

創建一個小測試用例並提交一個錯誤報告。 – blessenm 2012-07-25 00:26:38

+0

你可以發佈一些導致行爲的代碼和圖像,以及出錯的截圖嗎?即使這是一個錯誤,也許有人可以找到解決方法 – Craigy 2012-07-27 02:37:10

回答

1

我在「/ drawable-nodpi」中找到了所有圖形的副本。 Jellybean然後向他們展示了它們。

0

看來,Jellybean爲drawBitmap()引入了新的緩存行爲。現在它試圖緩存每個位圖對象的硬件紋理。

這意味着如果您重繪相同的位圖對象,它將重新使用之前的紋理。但它不檢查位圖對象的內容是否已更改,它只是使用指針來查找緩存。

在我看來,這是完全破碎,但他們顯然決定這樣做是出於性能的原因。類似的邏輯也適用於drawPath()。

我懷疑不同大小的行爲是因爲當您調整位圖的大小時,它會導致分配一個新的緩衝區。