Динамически получать чертежи по идентификатору
Я хочу взять 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
Используйте getResources().getIdentifier()
из вашего Context
(например, Activity
), но, пожалуйста, кешируйте результат, если вы будете использовать его более одного раза. getIdentifier()
реализуется на Resources
.
Например:
int drawableId=getResources().getIdentifier("foo"+index, "drawable", getPackageName());
вернет значение R.drawable.fooN
, где N
- это число, заданное index
.
Подробнее см. и this и this.