现象
在android开发中,经常会需要替换resdrawable中的图片,打开reslayout下的文件预览布局页面发现图片已经被替换,但在模拟器或者真实机器上运行时发现该图片并没有被替换,还是使用的是原来的资源图片。
原因
在开发过程中,由于使用模拟器测试了程序,在首次运行后会将res文件夹下的图片资源文件(如drawable-hdpi、drawable-ldpi和drawable-mdpi)拷贝到bin文件夹下。在替换资源图片后,eclipse并不清楚是否有图片改变,所以会使用原来bin下的res文件夹中的资源文件进行打包,而图片用的还是第一次eclipse所拷贝进去的文件,所以当运行程序后会发现替换资源图片在程序中没起作用。
解决方法
把项目Clean一下就可以了。也可以手动删除bin目录下的res目录。
其它补充
Eclipse中的Android项目bin目录文件结构:
./classes/ java文件编译出来的class文件
./dexedLibs/ 项目中引用的jar包
./res/ 资源文件,只包含图片不包含xml文件
./AndroidManifest.xml 复制自上层目录
./classes.dex Android系统中可以在Dalvik虚拟机上直接运行的文件格式;java源代码经过ADT的复杂编译后转换成Dex文件
./*apk 最终生成的文件,可以直接安装到手机
./resources.ap_ 资源文件打包成的中间文件