今天在写天气程序的时候,需要从webservice获取天气的状况,然后加载相应的天气图片,服务器上获取的是图片的名字,比如"0.gif",但是程序里需要设置为为imageView.setImageResource(R.drawable.a_0);这种格式,群友介绍了一个方法
int android.content.res.
Resources.getIdentifier(
String name,
String defType,
String defPackage)可以使用.
找到的话就会返回资源ID,如果没有找到返回0
int identifier = getResources().getIdentifier(name, "drawable", "com.test.weather");
第一个 参数为文件名,第二个为资源属性,第三个为包名.
之后就可以调用setImageResource()方法了.
另一种思路:
把图片放在src的某个package中,而不是res/drawable中,调用方法如下:
String path = "com/drawable/resource/imageName.png";
InputStream is = getClassLoader().getResourceAsStream(path);
Drawable.createFromStream(is, "src");
InputStream is = getClassLoader().getResourceAsStream(path);
Drawable.createFromStream(is, "src");
本文参考了 http://blog.sina.com.cn/s/blog_6714fba701018k8h.html