在Android SDK文档中,与@ drawable / my_image xml语法一起使用的所有示例都直接解决了存储在我项目的res / drawable目录中的图像。

我想知道在drawable目录中创建子目录是否明显不可行。

例如,如果我具有以下目录布局:

res/drawable

-- sandwiches

-- tunaOnRye.png

-- hamAndSwiss.png

-- drinks

-- coldOne.png

-- hotTea.png

我可以将金枪鱼色拉三明治的图像引用为@ drawable / sandwiches / tunaOnRye

还是我必须在可绘制目录中保持层次结构平坦。

#1楼

不可以,资源机制不支持drawable目录中的子文件夹,所以可以-您需要保持层次结构平坦。

您显示的目录布局将导致所有图像都不可用。

从我自己的实验来看,似乎在res/drawable文件夹中包含子文件夹的子文件夹将导致资源编译器失败-阻止正确生成R.java文件。

#2楼

随着图书馆系统的出现,为每套大资产创建一个图书馆可能是一种解决方案。

这仍然是有问题的,因为必须避免在所有资产中使用相同的名称,但是对每个库使用前缀方案应对此有所帮助。

它不像能够创建文件夹那样简单,但是有助于保持理智...

#3楼

#!/usr/bin/env ruby

# current dir should be drawable-hdpi/ etc

# nuke all symlinks

Dir.foreach('.') {|f|

File.delete(f) if File.symlink?(f)

}

# symlink all resources renaming with underscores

Dir.glob("**/*.png") {|f|

system "ln -s #{f} #{f.gsub('/', '_')}" if f.include?("/")

}

#4楼

这不是完美的方法。 您必须实现此处显示的相同方法。

您还可以通过可以使用的代码调用文件夹下的图片

Resources res = getResources();

Drawable shape = res. getDrawable(R.drawable.gradient_box);

TextView tv = (TextView)findViewByID(R.id.textview);

tv.setBackground(shape);

#5楼

我已经编写了一个eclipse插件,该插件可以通过使用两个下划线__分隔文件名来创建虚拟子文件夹。 该项目尚处于初期阶段,但是请放心,它不会使您的IDE崩溃

可以在此处找到更多详细信息,随时进行派生并发送拉取请求:

430d9fd876df16641e464ca42f1350b3.png

文章来源: www.oschina.net,作者:技术盛宴,版权归原作者所有,如需转载,请联系作者。

原文链接:https://my.oschina.net/stackoom/blog/3160403

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐