Динамически получать Drawables по ID - PullRequest
20 голосов
/ 10 марта 2010

Я хочу взять byte и добавить его к идентификатору ресурса, чтобы получить изображение, соответствующее этой пронумерованной колоде в игре. Это было легко сделать с путями на других устройствах, но с идентификаторами ресурсов я не уверен, как мне это сделать.

Вот что у меня сейчас:

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;
    }

В моей версии Blackberry это было просто:

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

Есть ли способ сделать что-то подобное с помощью идентификаторов ресурсов на Android?

1 Ответ

46 голосов
/ 10 марта 2010

Используйте getResources().getIdentifier() из вашего Context (например, Activity), но, пожалуйста, кэшируйте результат, если вы будете использовать его более одного раза. getIdentifier() реализовано на Resources.

Например:

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

вернет значение R.drawable.fooN, где N - это число, данное index.

Подробнее см. , это и , это и , это .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...