如何获得所有Drawable资源?

时间:2015-08-10 14:14:27

标签: java android

如何获取所有Drawable资源并将其放入ArrayList

我想制作类似扑克牌的东西,将它们放入ArrayList并将它们洗牌。之后,我想给球员卡片。最好的方法是什么?

2 个答案:

答案 0 :(得分: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现在将包含每个可绘制的

答案 1 :(得分:4)

要遍历您的drawable,您可以使用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);
}