1

私は現在、学校向けのシンプルな Android ゲームに取り組んでいます。ゲームは、メモリが不足してクラッシュする前に少し実行されます。これは、ゲームで使用している画像の数に関係していると思われます (10 個以上のアイテム/キャラクター/ボタン用の 10 ~ 20 KB の小さなサイズのファイルと、スプラッシュ スクリーン用の非常に大きな 450 KB の PNG ファイル)バックグラウンド)。

私は BitmapFactory を使用して小さなアイテムの PNG をすべてデコードしてきました。また、メインの GameView の背景を設定することもできました (最小限のサンプル コードのみが含まれています)。

public class GameView extends SurfaceView implements SurfaceHolder.Callback {

private Bitmap background, invincibleBitmap;

//Sets the background bitmap to an image scaled to the same size as the user's screen
background = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.background), getWidth(), getHeight(), false);
invincibleBitmap = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.invincible_item), 60, 60, false);

ただし、前述のスプラッシュ スクリーンでは、Activity の Layout XML ファイルを使用して画像を次のように設定しています。

  android:background="@drawable/main"

メモリの過負荷の問題に役立つことを期待して、アクティビティのビューで行ったのと同じ方法で main.png をスケーリングできるようにしたいと考えています。どうすればこれを行うことができますか?私は一般的にAndroidの初心者なので、ソリューションがシンプルであるほど良い.

4

1 に答える 1

0

指摘しておくと、画像ファイルのサイズはメモリ使用量に影響しません。画像の仕様によって異なります: 幅 x 高さ x 1 バイト。

画面の解像度に応じてスケーリングして、コードでスプラッシュ画面の画像を設定しないでください。ドローアブル フォルダーはそのためにあります。画面解像度カテゴリ (l、m、x、xx、xxx) ごとに異なる仕様の異なる画像を提供します。

迅速な解決策として、同じ画像をすべてのドローアブル フォルダーにコピー アンド ペーストします。驚くべきことに、違いに気付くでしょう。

于 2014-11-24T09:46:01.360 に答える