朋友做项目过程中遇到一个问题,从数据库里读取图片名称,然后调用图片。
但是直接用R.drawable.?无法调用。头痛,不过还是解决了.嘻嘻.
1. 不把图片放在res/drawable下,而是存放在src某个package中
(如:com.drawable.resource),使用流读取:
String str= "com/drawable/resource/aa.png";InputStream is = getClassLoader().getResourceAsStream(str);
Drawable.createFromStream(is, "src");
2. 如果还是希望直接使用res/drawable中的图片,就需要通过下面的方法了:
假设创建工程的时候,填写的package名字为:com.lily.test
int resID = getResources().getIdentifier("imageName", "drawable", "com.lily.test");
Drawable image = getResources().getDrawable(resID);
通过res.getIdentifier()方法来获得资源的ID,在去应用资源,其运行的效率,可真要掂量掂量
引用API上的注释:此方法不推荐使用,引用资源最好使用其全局的ID!
另外,通过ID获取资源名称的方法也十分简单:getResourceName(int resID)