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));