在android SDK文件中,所有的示例使用@drawable/my_image这个xml语法直接寻找存储在我的工程中的res/drawable目录下的图片。
我想知道在drawable资源目录下再创建一个子目录是否是确实不能用。
例如,我的布局目录是这样的:
res/drawable
-- sandwiches
-- tunaOnRye.png
-- hamAndSwiss.png
-- drinks
-- coldOne.png
-- hotTea.png
我能引用tuna salad sandwich这个游戏的图片作为@drawable/sandwiches/tunaOnRye吗?
或者我必须在drawable资源目录中保持水平的层级。
不可以的,资源机制在drawable资源目录中不支持子文件夹,所以,你需要保持这个水平层级。
你显示出的目录的布局将导致没有可用的图像。
根据我的经验,在res/drawable文件夹里边的任何项目都有一个子文件夹,这将引起资源编译器不可用--组织R.java文件正确的生成。
我用的变通方案从本质上来说就是(android它本身看起来很适用)用下划线代替斜杠,所以你的结构看起来就像这样:
sandwich_tunaOnRye.png
sandwich_hamAndSwiss.png
drink_coldOne.png
drink_hotTea.png
这个方法需要你非常的谨慎细致命名,不要让文件本身发生名称上的混乱(如果你决定饮料和三明治真的都是食物,你就应该做一个大规模的重命名,而不是简单的把他们移动到该目录下);但是和文件夹结构相比,你的程序逻辑的复杂性不会遭受太严重的改变。
这种情况的确很糟糕。Android就是奇妙的和可怕的设计方案的大杂烩。我们现在只能希望后面到期的部分能够得到淘汰。
使用assets floder
示例代码
InputStream is = null;
try {
is = this.getResources().getAssets().open("test/sample.png");
} catch (IOException e) {
;
}
image = BitmapFactory.decodeStream(is);
实践是检验真理的唯一标准 ,试一下不就知道
可以创建文件夹,但是里面的资源是引用不到的