如何获取所有Drawable
资源并将其放入ArrayList
?
我想制作类似扑克牌的东西,将它们放入ArrayList
并将它们洗牌。之后,我想给球员卡片。最好的方法是什么?
答案 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);
}