2015-08-10 3 views
2

Как получить все Drawable ресурсов и разместить их в ArrayList?Как получить все Ресурсы Drawable?

Я хочу сделать что-то вроде игральных карт, положить их в ArrayList и перетасовать их. После этого я хочу дать игрокам карты. Каков наилучший способ сделать это?

ответ

4

Чтобы перебрать ваши чертежи, вы можете использовать класс Field.

попробовать что-то вроде следующего:

Field[] drawablesFields = com.your.project.R.drawable.class.getFields(); 
ArrayList<Drawable> drawables = new ArrayList<>(); 

for (Field field : drawablesFields) { 
    try { 
     Log.i("LOG_TAG", "com.your.project.R.drawable." + field.getName()); 
     drawables.add(getResources().getDrawable(field.getInt(null))); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

Или вы можете также использовать папку assets. Поместите изображения внутри подкаталога images и используйте класс AssetManager для получения этих файлов. Это подход, который составляет не для конкретного проекта.

Попробуйте что-то вроде:

AssetManager am = context.getAssets(); 
String[] files = am.list("images"); 
InputStream istr = null; 
ArrayList<Drawable> drawables = new ArrayList<>(); 

for (String file : files) { 
    Drawable d = Drawable.createFromStream(am.open(file), null); 
    drawables.add(d); 
} 
+3

Почему это downvoted? – Mauker

+0

потому что, когда он был написан, он не ответил на вопрос особенно хорошо. – d0nut

+0

Достаточно честный. Но сейчас – Mauker

5
Field[] drawables = com.example.myapp.R.drawable.class.getFields(); 

ArrayList<Drawable> drawableResources = new ArrayList<>(); 

for(Field field : drawables) 
{ 
    //drawable's id added to arraylist 
    drawableResources.add(getResources().getDrawable(field.getInt(null))); 
} 

drawableResources теперь будет содержать каждую вытяжку

Смежные вопросы