Говоря из личного опыта, вы должны использовать Растровые изображения вместо Drawables . Это даст лучшие результаты.
Растровое изображение наилучшим образом подойдет вашим параметрам, поскольку все, что вам нужно (насколько я могу судить), это изображение, которое будет отображаться на экране.
Drawable имеет более широкий охват (документация с сайта Android Dev.):
Drawable - это общая абстракция для «чего-то, что можно нарисовать».
Чаще всего вы будете иметь дело с Drawable как тип ресурса
извлекается для рисования вещей на экране; класс Drawable
предоставляет общий API для работы с базовым визуальным ресурсом
это может принимать различные формы. В отличие от View, Drawable не
иметь возможность получать события или иным образом взаимодействовать с
Пользователь.
Обязательно загрузите все свои растровые изображения перед началом игры; Это чистый подход. Если вы этого не сделаете, ваша игра может отставать из-за GC.
Вы можете создать класс, содержащий все статические поля растрового изображения.
public static Bitmap foo;
Затем в вашем классе деятельности вы можете загрузить эти растровые изображения (я обычно помещаю свои растровые изображения в папку «Активы»):
NB. Вероятно, лучше создать класс с именем LoadScreen или SplashScreen, который позаботится обо всей инициализации. Если вы сделаете это таким образом, вам нужно будет передать ссылку на ваш класс активности этому классу.
Assets.foo = readAssetsBitmap("foo.png");
public Bitmap readBitmapFromMemory(String filename) {
Bitmap defautBitmap = null;
File filePath = getFileStreamPath(filename);
FileInputStream fi;
try {
fi = new FileInputStream(filePath);
defautBitmap = BitmapFactory.decodeStream(fi);
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
return defautBitmap;
}
Когда пользователь решает выйти из игры, вы должны выгрузить все растровые изображения следующим образом:
disposeBitmap(Assets.foo);
public void disposeBitmap(Bitmap bitmap) {
bitmap.recycle();
bitmap = null;
}
Надеюсь, это поможет.