关于图片资源在android2.1/2.2/2.3下无法显示的问题以及解决方法
这些天在写android应用,遇到了一件很诡异的事情:
某个图片资源作为背景被设置到layout上,在eclipse的layout设计界面内能显示,但是启动模拟器后图片完全无法显示;我将应用打包到真机上测试,发现图片能显示!
但事实远未那么简单。。后来我将应用打包给我的几个朋友测试,发现图片又是无法显示。
其中,我的应用支持的版本是2.1,模拟器版本是2.1,我的机器版本是4.0,两个朋友的机器分别是2.1和2.3。于是我猜想该图片在2.1和2.3上不兼容,于是单独建立一个工程,对该图进行测试,结果发现都能显示。
为什么这个图在我的应用上无法显示,在测试应用上可以显示,而且还是和版本相关。。。
经过一番折腾和各种假设以及实验找到了解决方法:
该图的名字是a打头,所以排在第一个,android自动产生R类资源索引,该图的索引值是0x7f040000,后面都是0有木有!我发现只要是索引是0x7f040000的图片资源,在我的应用中都是无法显示,所以我就再扔进去一张没用的图片取名叫aaa.png让它排在第一个占用掉0x7f040000这个索引,然后,一切都正常了。
疑问:虽然问题解决了,但是为什么在测试工程中同样图片资源索引是0x7f040000也是可以显示呢?我猜想可能是我的应用中使用到了别的一些xml定义的drawable资源产生的冲突吧,也许是android的bug,但具体这个问题是如何产生的,还是没搞清楚。。。