如何从可绘制的文件夹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之后