I have a Activity on in my game to browser levels. In this activity Have a HorizontalScrollViewer display 25 levels at a time. The levels are represented by LevelBrowserButtons which are custom components. Each LevelBrowserButton an image of the level and these images are not very big and never over 35K each.
So with 25 buttons it should not use more than a 1MB for images but even with a VM heap size of 24 I get "java.lang.OutOfMemoryError: bitmap size exceeds VM budget".
My code is below:
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);
}
}
I have read quite a bit of threads of people having the same type of issue but could not figure it out. This is not to do with disposing of Bitmaps properly as I haven't even been able to get that far.