0

Jelly Bean に更新されたデバイス上のアプリの 1 つで奇妙な動作が発生しました。このゲームは以下を行います: canvas.drawBitmap(bitmap, locationX ,locationY, null); 私のビットマップは、40x15 と 60x15 の 2 つのサイズにすることができます。

Jelly Bean デバイス (Galaxy Nexus と Nexus S で試しました) では、60x15 のビットマップを使用すると、drawBitmap は何も描画しません。サイズを 40x15 に変更すると、問題なく動作します。

Androidの下位バージョンで問題はありません。

前もって感謝します!

4

2 に答える 2

1

「/drawable-nodpi」にすべてのグラフィックのコピーを保存することで回避策を見つけました。ジェリービーンはそれらを見せました。

于 2012-08-07T11:04:22.773 に答える
0

Jellybean は drawBitmap() の新しいキャッシュ動作を導入したようです。これで、ビットマップ オブジェクトごとにテクスチャをハードウェアにキャッシュしようとします。

これは、同じビットマップ オブジェクトを再描画すると、以前のテクスチャが再利用されることを意味します。ただし、ビットマップ オブジェクトの内容が変更されたかどうかはチェックせず、ポインターを使用してキャッシュを検索するだけです。

私の意見では、これは完全に壊れていますが、パフォーマンス上の理由からそうすることに決めたのは明らかです。同様のロジックが drawPath() にも適用されます。

ビットマップのサイズを変更すると、新しいバッファが割り当てられるため、さまざまなサイズの動作が疑われます。

于 2013-08-08T02:22:57.800 に答える