2011-10-31 19 views
1

私は自分のゲームでブラウザレベルにActivityを持っています。このアクティビティでは、一度にHorizo​​ntalScrollViewerに25レベルを表示させます。レベルはカスタムコンポーネントであるLevelBrowserButtonsで表されます。各LevelBrowserButtonはレベルのイメージで、これらのイメージはそれほど大きくなく、35Kを超えることはありません。Android Image Memoryの問題

25ボタンの場合、イメージに1MBを超えるはずはありませんが、VMヒープサイズが24の場合でも、「java.lang.OutOfMemoryError:ビットマップサイズがVMの予算を超えています」というメッセージが表示されます。

私のコードは以下の通りです:私は、問題の同じ種類を持つ人々のスレッドのかなりを読みましたが、それを把握することができませんでした

public class LevelBrowserButton extends LinearLayout 
{ 
    int LayoutNumber = 1; 


    public LevelBrowserButton(Context context, String layoutName, int layoutNumber) 
    { 
    super(context); 
    LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);          
    inflater.inflate(R.layout.levelbrowser_button, this); 

    LayoutNumber = layoutNumber; 

    // Set Layout Name 
    TextView nameTextView = (TextView) findViewById(R.id.NameTextView); 
    nameTextView.setText(layoutNumber + ": " + layoutName); 

    // Set Layout Image 
    int imageResource = this.getResources().getIdentifier("levelbrowser_" + layoutNumber, "drawable", "mobile.firegame"); 
    ImageView backgroundImageView = (ImageView)findViewById(R.id.BoardImageView); 
    backgroundImageView.setImageResource(imageResource); 

    // Set Status Image 
    ImageView statusImageView = (ImageView)findViewById(R.id.StatusImageView); 
    if (Settings.getLevelStats(layoutName).Completed) 
     statusImageView.setImageResource(R.drawable.levelbrowser_completed); 
    else 
     statusImageView.setImageResource(R.drawable.levelbrowser_uncompleted); 
    } 
} 

。これは、ビットマップを適切に処分することとは関係ありません。なぜなら、私はこれまでにもそれを実現することはできませんでした。

+1

イメージの解像度(px * px)を教えてください。いくつかの圧縮ファイル形式が35KBであるという事実は、ビットマップの実際のメモリ要件についてはほとんど言及していません。 –

+0

これは350x300です。 – Moresby

+0

ビットマップの価値は350 * 300 * 3 * 8 * 25(w * h * rbg * byte * images)バイト、つまり60 MBです。画面サイズによっては、2より多く表示することはできませんそれらのうちの3つはいつでも、あなたは考慮する必要がありますhttp://stackoverflow.com/questions/541966/android-how-do-i-do-a-lazy-load-of-images-in-listview –

答えて

0

これは私が答えたものと同様の質問で、適切な画像サイズを動的に読み込む方法を示しています。

メモリ不足例外+分析hprofファイルダンプ