Как добраться до ресурса «R.raw.img» + r в Java? - PullRequest
1 голос
/ 13 января 2011

У меня есть ресурсы изображения img1,img2,...img10, как динамически ссылаться на них в приведенном ниже коде?

    for (int r=1; r<=10; r++){
        TableRow tr = new TableRow(this);
        ImageView im = new ImageView (this);
        im.setImageDrawable(getResources().getDrawable(R.raw.img1));
     ...

Я хочу получить ссылку на 'R.raw.img' + r ...

Ответы [ 3 ]

3 голосов
/ 13 января 2011

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

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="pictures">
        <item>@drawable/img1</item>
        <item>@drawable/img2</item>
        <item>@drawable/img3</item>
    </array>
</resources>

Код так,

Resources res = getResources();
TypedArray pics = res.obtainTypedArray(R.array.pictures);

Затем вы можете перебирать массив следующим образом:

for (i.....)
    Drawable drawable = pics.getDrawable(i);
1 голос
/ 13 января 2011

Наверное, проще всего сделать:

int[] images = new int[]{
    R.raw.img1, R.raw.img2 .... 
};
for (int r=1; r<=10; r++){
    TableRow tr = new TableRow(this);
    ImageView im = new ImageView (this);
    im.setImageDrawable(getResources().getDrawable(images[i]));
 ...

Если вы хотите избавиться от массива, вам нужно отражение

0 голосов
/ 13 января 2011

Попробуйте это:

Bitmap _scratch = BitmapFactory.decodeResource(getResources(), R.drawable.img1);

Вам нужно будет импортировать Bitmap и BitmapFactory. _scratch это рабочий дескриптор ресурса R.drawable.img1

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