Android 如何在my/res文件夹中动态获取图像
我正在尝试动态地从我的/res文件夹中获取图像,我只是对下一部分感到困惑。我环顾了一下StackOverflow,看到了这个示例,这正是我需要从中开始的:Android 如何在my/res文件夹中动态获取图像,android,image,view,Android,Image,View,我正在尝试动态地从我的/res文件夹中获取图像,我只是对下一部分感到困惑。我环顾了一下StackOverflow,看到了这个示例,这正是我需要从中开始的: String fName = "android.resource://j.l.library11/drawable/" + itemName; 我想既然它在我的/res文件夹中,它应该是: String fName = "android.resource://j.l.library11/drawable/res/" + itemName;
String fName = "android.resource://j.l.library11/drawable/" + itemName;
我想既然它在我的/res文件夹中,它应该是:
String fName = "android.resource://j.l.library11/drawable/res/" + itemName;
以下哪一项是正确的
此外,我还不清楚接下来的几个步骤是什么,以便能够使用my/res文件夹(itemName)中的图像设置ImageView(iView)。我脑子里唯一能想到的是:
File file = new File(fName);
然后得到散列码
int itemHashCode = file.HashCode()
然后把它当作
iView.setImageResource(itemHashCode).
这行得通吗?或者有人知道正确的解决方案吗?放置在res/drawable中的图像由R.java类中的AAPT到整数映射自动编译。您可以使用以下方法在ImageView上设置图像:
myImageView.setImageResource(R.drawable.nameOfYourImage);
编辑:我不清楚您为什么要这样做,但使用图像的哈希代码设置ImageView的资源将导致ResourceNotFoundException
编辑:如果您试图根据与数据库中某些数据的关联来动态设置图像,那么可以通过将R.drawable.imagename的int保存在数据库中的新整数列中来利用编译drawables这一事实。然后您可以简单地设置图像,如setImageResource(intFromDB)
。如果您没有在代码中设置DB,因此无法访问已编译的R.drawable,则另一种方法如下:
Resources res = getResources();
String mDrawableName = "image_name";
int resourceId = res.getIdentifier(mDrawableName , "drawable", getPackageName());
Drawable drawable = res.getDrawable(resourceId);
icon.setImageDrawable(drawable );
甚至更短,这可能会起作用:
int id = getResources().getIdentifier("mypackagename:drawable/imageName", null, null);
imageView.setImageResource(id);
我要说的是反思:
Field[] fields = R.drawable.class.getFields();
for(Field field:fields){
try {
imageView.setImageResource(field.getInt(null));
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
但这不符合我的需要。myImageView.setImageResource(R.drawable.nameOfYourImage);“nameOfYourImage”是动态的,当我将传递到方法(itemName)中的字符串放入时,它告诉我setImageResource()中不能有字符串。例如setImageResource(R.drawable.+“itemName”)。请参阅我的编辑。你能解释一下你到底想做什么吗?这是正确的,因为方法setImageResource需要一个int,并且该int必须是R.drawable中的int之一。所以如果我有一个具有字符串参数(项名称)的方法我将如何使用该项目名称在我的/res文件夹中查找项目图像,然后将其设置为我的ImageView我想这就是我想说的。你没有解释这个方法是什么…“如果我有一个方法”。。。为什么有这样的方法,为什么不能使用普通的R.drawable.myImage?