Speaking from personal experience, you should go Bitmaps , not Drawables . This will give better results.
The bitmap will suit your best settings, since all you need (as far as I can tell) is the image that will be displayed on the screen.
A Drawable has a wider reach (documentation from Android Dev.):
A Drawable is a general abstraction for "something that can be drawn." Most often, you will consider Drawable as a type of resource retrieved to draw objects on the screen; The Drawable class provides a common API for working with the main visual resource, which can take various forms. Unlike a view, Drawable does not have any means of receiving events or otherwise interacting with the user.
Definitely upload all your bitmaps before the game starts; This is a clean approach. If you do not, your game may lag behind the GC.
You can create a class containing all the static Bitmap fields.
public static Bitmap foo;
Then in your activity class, you can load these bitmaps (usually I put my bitmaps in the Assets folder):
Note. It is probably best to create a class called LoadScreen or SplashScreen that takes care of all initialization. If you do this like this, you will have to pass the link to your activity class to this class.
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; }
When the user decides to exit the game, you must unload all the bitmaps as follows:
disposeBitmap(Assets.foo); public void disposeBitmap(Bitmap bitmap) { bitmap.recycle(); bitmap = null; }
Hope this helps.