Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dynamically get drawables by ID

Tags:

I want to take a byte and append it to a resource ID to be able to get the image that corresponds to that numbered deck in the game. It was easy to with paths on other devices, but with the Resource ID's I am unsure how I could go about do this.

Here's what I have now:

switch(GameSettings.gameDeck)     {     case 1:         deckImage.setBackgroundResource(R.drawable.deck1);         break;     case 2:         deckImage.setBackgroundResource(R.drawable.deck2);         break;     case 3:         deckImage.setBackgroundResource(R.drawable.deck3);         break;     case 4:         deckImage.setBackgroundResource(R.drawable.deck4);         break;     } 

In my Blackberry version of this, I simply had:

deckImage.setBitmap(Bitmap.getBitmapResource("/path/deck" + GameSettings.gameDeck + ".png")); 

Is there a way to accomplish something similar using Resource IDs on Android?

like image 730
Matt Swanson Avatar asked Mar 10 '10 02:03

Matt Swanson


1 Answers

Use getResources().getIdentifier() from your Context (e.g., Activity), but please cache the result if you will use it more than once. getIdentifier() is implemented on Resources.

For example:

int drawableId=getResources().getIdentifier("foo"+index, "drawable", getPackageName()); 

would return the value of R.drawable.fooN, where N is the number given by index.

For more, see this and this and this.

like image 150
CommonsWare Avatar answered Sep 21 '22 06:09

CommonsWare