如何从可绘制的文件夹dynamic获取图像

我有一个这样的数组。

int image[] = {R.drawable.d002_p001,R.drawable.d002_p002,R.drawable.d002_p003, R.drawable.d002_p004,R.drawable.d002_p005,R.drawable.d002_p006}; 

现在我有6个图像,所以我静静地给了这个名字。

如果我有50个图像,我不能给每个文件名的数组,所以它需要是dynamic的,我怎么能做到这一点。

你可以使用getIdentifier()

 for (int j = 1; j < 6; j++) { Drawable drawable = getResources().getDrawable(getResources() .getIdentifier("d002_p00"+j, "drawable", getPackageName())); } 

你也可以使用这个:

 int res = getResources().getIdentifier("<your pakecgename>:drawable/abc", null, null); 

像这样的东西可以工作

 Field[] drawables = android.R.drawable.class.getFields(); for (Field f : drawables) { try { System.out.println("R.drawable." + f.getName()); } catch (Exception e) { e.printStackTrace(); } } 
 public static Drawable getImage(Context context, String name) { return context.getResources().getDrawable(context.getResources().getIdentifier(name, "drawable", context.getPackageName())); } 

使用下面这行来dynamic获取drawable:

 Drawable drawable = this.getResources().getDrawable(R.drawable.yourDrawableID); 

这会给你想要的Drawable。

 String[] names = new String []{"yout names..."}; for(String n: names) { Utils.GetDrawableByName(n,this); } public class Utils { public static Drawable GetDrawableByName(String name,Activity context){ Resources res = context.getResources(); return res.getDrawable(res.getIdentifier(name,"drawable",context.getPackageName())); } } 

使用此代码来创build数组,然后使用该数组

 int image[] = new int[50]; for (int i = 1 ; i <= 50 ; i++) { images[i] = "R.drawable.d002_p00"+i; } 

主要的事情你必须注意的是,文件名必须以“d002_p00”开头,在有数字1到50之后