Динамическое получение объектов рисования по идентификатору
Я хочу взять byte и добавить его к идентификатору ресурса, чтобы иметь возможность получить изображение, соответствующее этой пронумерованной колоде в игре. Это было легко сделать с путями на других устройствах, но с идентификаторами ресурсов я не уверен, как я мог бы это сделать.
Есть ли способ выполнить что-то подобное, используя идентификаторы ресурсов на Android?
Переведено автоматически
Ответ 1
Используйте getResources().getIdentifier() из вашего Context (например, Activity), но, пожалуйста, кэшируйте результат, если вы будете использовать его более одного раза. getIdentifier() реализовано на Resources.
Например:
int drawableId=getResources().getIdentifier("foo"+index, "drawable", getPackageName());
вернет значение R.drawable.fooN, где N - число, заданное index.
В вашем случае имя отрисовываемого изображения совпадает с начальными символами, а цифры разные. итак, когда ваше приложение будет выполнено. Сгенерированные идентификаторы для вашего имени объекта рисования представляют собой последовательность последовательных приращений. Это идентификаторы, сгенерированные, когда я назвал свой объект рисования таким же, как ваш пример кода
int drawable deck1 0x7f07007a//convert hex to decimal = 2131165306 int drawable deck2 0x7f07007b//convert hex to decimal = 2131165307 int drawable deck3 0x7f07007c//convert hex to decimal = 2131165308 int drawable deck4 0x7f07007d//convert hex to decimal = 2131165309
Вы можете проверить файл R.txt, созданный Android Studio.