私は現在、学校向けのシンプルな 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の初心者なので、ソリューションがシンプルであるほど良い.