Подтвердить что ты не робот

Динамически получать чертежи по идентификатору

Я хочу взять 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?

4b9b3361

Ответ 1

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

Например:

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

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

Подробнее см. и this и this.