我在res / drawable-mdpi目录中有一个条目列表和一些位图文件。我正在尝试通过生成路径字符串并使用位图工厂来加载与从列表中选择的字符串值对应的图像。问题是我不认为我的路径是正确的,因为位图始终为空,即使对于默认图像也是如此。
String name = entries.get(position);
String img = "res/drawable/logo_" + name.toLowerCase() + ".png"; // create the file name
icon.setScaleType(ImageView.ScaleType.CENTER_CROP);
// check to see if the file exists
File file = new File(img);
if (file.exists()){
bm = BitmapFactory.decodeFile(img);
}
else{// use the default icon
bm = BitmapFactory.decodeFile("logo_default.png");
}
// set the image and text
icon.setImageBitmap(bm);
res目录是否会被复制到设备上?我应该使用的正确路径是什么,或者我应该以不同的方式解决这个问题?
由于
答案 0 :(得分:50)
如果您在drawable文件夹中有图像,那么您将采用错误的方式。
尝试这样的事情
Resources res = getResources();
String mDrawableName = "logo_default";
int resID = res.getIdentifier(mDrawableName , "drawable", getPackageName());
Drawable drawable = res.getDrawable(resID );
icon.setImageDrawable(drawable );
答案 1 :(得分:17)
无需使用getDrawable()直接使用资源ID,如
String mDrawableName = "myimageName";
int resID = res.getIdentifier(mDrawableName , "drawable", getPackageName());
imgView.setImageResource(resID);
答案 2 :(得分:0)
你可以创建公共函数来获得这样的图像:
public static Drawable getDrawable(Context mContext, String name) {
int resourceId = mContext.getResources().getIdentifier(name, "drawable", mContext.getPackageName());
return mContext.getResources().getDrawable(resourceId);
}
答案 3 :(得分:0)
device.launchApp({ newInstance: true, permissions: { notifications: 'NO' } });