Как включить изображения в проект Android наилучшим образом? - PullRequest
0 голосов
/ 24 октября 2011

Мое приложение для Android в основном простое, в котором есть один просмотр списка с 40 элементами списка. И каждый из этих пунктов при нажатии приводит один к изображению. так что есть 40 изображений.

Я, конечно, всегда могу поместить эти изображения в папку res / drawable и обратиться к ним напрямую из моего файла Java, в этом случае будет сделано жесткое кодирование

img.setImageResource(R.drawable.day1);
.
.
.
img.setImageResource(R.drawable.day3);
.
.

. и т.д.

Есть ли в любом случае (путем сохранения имен изображений в xml, например) программно извлекать имена изображений из папки и отображать их?

Ответы [ 4 ]

1 голос
/ 24 октября 2011
int resID = getResources().getIdentifier("day" + i,
    "id", getPackageName());

где я ваш индекс

img.setImageResource(resID);
0 голосов
/ 24 октября 2011

Простой способ сделать это так: Вы помещаете свои изображения в res / drawable, называете все, используя определенный образец (например: img1, img2, img3 ...), и после этого вы загружаете их динамически, используя образец для имен, подобных этому:

String imageName =IMAGE_PATTERN+id;
int imageResource = getResources().getIdentifier(imageName,null,getPackageName());
imageView.setImageDrawable(getResources().getDrawable(imageResource));

, где IMAGE_PATTERN может быть что-то вроде «изображения» или «IMG» или что-то, что вы использовали для именования файлов:)

удачи, Arkde

0 голосов
/ 24 октября 2011

Что бы я сделал:

Я бы поместил изображения в папку res / drawable, как вы сказали, но не назвал бы их так, как вы сказали; слишком много работы! Попробуйте создать массив «Изображения», заполненный циклом for, где вы добавляете в каждую позицию что-то вроде:

for (i;i<x;i++)   //Where x is the number of images you use
     Images[i] = "R.drawable.day"+String.valueOf(i);
     // Even you could try with:
     // Images[i]="img.setImageResource(R.drawable.day"+String.valueOf(i)+")";

Таким образом, вам просто нужно вызвать images [i], чтобы вызвать image "i"

Надеюсь, это поможет вам:)

0 голосов
/ 24 октября 2011

Создание динамического растрового объекта с использованием ресурса.

    ImageView image = (ImageView) findViewById(R.id.test_image);
    Bitmap bMap = BitmapFactory.decodeFile("/sdcard/"+"test"+index+".png");
    image.setImageBitmap(bMap);

Используется то же имя изображения, что и для image1, image2 ... вызывается для цикла или индекса ..

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