Пакетное получение многих растровых ресурсов на Android - PullRequest
5 голосов
/ 25 января 2010

У меня есть длинная серия графиков - icon1_0.png, icon1_1.png, icon1_2.png ..., icon12_0.png, icon12_1.png, icon12_2.png - и я бы хотел упаковать их с моим Android-приложение. В идеале я думаю, что я должен иметь возможность загружать их как ресурсы, но идентификаторы ресурсов устанавливаются как идентификаторы Java. Конечно, идентификаторы Java не могут быть собраны во время выполнения. Я должен попросить R.drawable.icon12_00, поэтому я не могу настроить цикл

for(int icon=0;icon<12;icon++)
 for(int frame=0;frame<3;frame++)
  //syntax error obviously
  BitmapFactory.decodeResource(getResources(), R.drawable."icon" + icon + "_" + frame + ".png");

Так есть ли способ получить ресурсы по их именам? Еще лучше, есть ли канонический способ вне системы ресурсов упаковать файлы данных в пакет приложения для Android, чтобы я мог получить к ним доступ?

Я думаю о рефлексии, но мне это не кажется правильным решением.

Ответы [ 3 ]

13 голосов
/ 25 января 2010

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

6 голосов
/ 25 января 2010

Я знаю, что вы уже нашли ответ, но если вы используете отражение, вы увидите хорошее увеличение скорости, поскольку getIdentifier () медленнее. Я писал о том, как сделать метод отражения здесь . Однако это работает, только если вы обращаетесь к своим собственным ресурсам.

2 голосов
/ 25 января 2010

Отражение также очень медленное, вам просто нужно создать массив со всеми вашими идентификаторами.

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