Android: Как создать массив Drawable?

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

ImageView.setImageResource(image[1]);

Надеюсь, я хорошо объяснил...

Ответы

Ответ 1

Для этого вам не нужен массив Drawable, просто массив идентификаторов ресурсов, потому что "setImageResource" принимает эти идентификаторы. Как насчет этого:

int[] myImageList = new int[]{R.drawable.thingOne, R.drawable.thingTwo};
// later...
myImageView.setImageResource(myImageList[i]);

Или для изменяемой версии:

ArrayList<Integer> myImageList = new ArrayList<>();
myImageList.add(R.drawable.thingOne);
// later...
myImageView.setImageResource(myImageList.get(i));

Ответ 2

Прежде всего, вы должны получить все доступные идентификаторы ваших изображений следующим способом:

int android.content.res.Resources.getIdentifier(String name, String defType, String defPackage)

Например, вы можете прочитать все доступные ID в цикле:

int drawableId = resources.getIdentifier("picture01", "drawable", "pkg.of.your.java.files");
                                          picture02...
                                          picture03...

.. и затем сохраните их в массив растровых изображений:

private Bitmap[] images;
images[i] = BitmapFactory.decodeResource(resources, drawableId);

Теперь вы можете использовать свои изображения в качестве массива.

Ответ 3

по отношению к @Bevor, вы можете использовать метод getResources() вместо android.content.res.Resources следующим образом:

ArrayList<Integer> imgArr = new ArrayList<Integer>();

    for(int i=0;i<5;i++){

        imgArr.add(getResources().getIdentifier("picture"+i, "drawable", "pkg.of.your.java.files"));
    }

Использование:

imageView.setImageResource((int)imgArr.get(3));