Android - 从@drawable String打开资源

时间:2010-02-28 01:08:44

标签: android

我有:

String uri = "@drawable/myresource.png";

如何在ImageView中加载? this.setImageDrawable?

7 个答案:

答案 0 :(得分:170)

如果你真的需要使用字符串,请尝试这样的事情:

private void showImage() {
    String uri = "drawable/icon";

    // int imageResource = R.drawable.icon;
    int imageResource = getResources().getIdentifier(uri, null, getPackageName());

    ImageView imageView = (ImageView) findViewById(R.id.myImageView);
    Drawable image = getResources().getDrawable(imageResource);
    imageView.setImageDrawable(image);
}

否则我建议你使用R. *这样的参考文献:

int imageResource = R.drawable.icon;
Drawable image = getResources().getDrawable(imageResource);

答案 1 :(得分:25)

首先,不要这样做,因为@drawable语法在Java代码中毫无意义。使用int resourceId=R.drawable.myresource

如果由于某种原因你结束了资源名称并需要整数ID,请在getIdentifier()对象上使用Resources

答案 2 :(得分:10)

你也可以添加你自己的变量..在我的案例scene.name之间我跟着@pfleidi答案。 c代表上下文。

String uri = "drawable/" + scene.name; 
int imageResource = c.getResources().getIdentifier(uri, null, c.getPackageName());

imageList.setImageResource(imageResource);

答案 3 :(得分:6)

早已过期,但我最喜欢的是使用Context:

context.getApplicationContext().getResources().getDrawable(R.drawable.placeholder_image)

其中 placeholder_image 是资源的ID。在您的情况下,R.drawable.myresource

上下文可以是活动或应用程序。几乎无论你身在何处,都可以参考上下文,你可以使用它来获取应用程序的上下文。

答案 4 :(得分:4)

如果有其他人遇到我遇到的问题,我正在从JSON加载图像名称,然后需要获取标识符。 getIdentifier的第二个参数可以设置为" drawable"。这是@ alia-ramli-ramli回答的一个细微变化......

String uri = details.getString("circle").toLowerCase();

int imageResource = context.getResources().getIdentifier(uri, "drawable", context.getPackageName());
Drawable image = context.getResources().getDrawable(imageResource);
viewHolder.unit_circle.setImageDrawable(image);

答案 5 :(得分:2)

您可以检查here

int resID = mContext.getResources().getIdentifier(stringfilename, "drawable", mContext.getPackageName());
iv_imageview.setImageDrawable(ContextCompat.getDrawable(mContext,resID)); 

您还可以通过用getIdentifier()方法的“ mipmap”参数替换“ drawable”来从mipmap中检索图像。

答案 6 :(得分:0)

我有同样的问题...已弃用等等。  我用最少的API 14解决了这个问题。



...
...
ImageView imgPoster = viewCache.getImgPoster(resource);
String uri = "drawable/" + film.getPoster();
int imageResource = context.getResources().getIdentifier(uri, null, context.getPackageName());
Drawable image = ContextCompat.getDrawable(context, imageResource);
imgPoster.setImageDrawable(image);

return convertView;
...
...