yiranwujixian
yiranwujixian
2012-09-19 01:56
采纳率: 100%
浏览 12.1k

Android的drawable资源目录下能包含子目录吗?

在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资源目录中保持水平的层级。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • mansuifengqi
    漫随风起 2012-09-19 02:37
    已采纳

    不可以的,资源机制在drawable资源目录中不支持子文件夹,所以,你需要保持这个水平层级。
    你显示出的目录的布局将导致没有可用的图像。
    根据我的经验,在res/drawable文件夹里边的任何项目都有一个子文件夹,这将引起资源编译器不可用--组织R.java文件正确的生成。

    点赞 1 评论
  • yizhenbeifeng
    yizhenbeifeng 2012-09-19 03:01

    我用的变通方案从本质上来说就是(android它本身看起来很适用)用下划线代替斜杠,所以你的结构看起来就像这样:

    sandwich_tunaOnRye.png
    sandwich_hamAndSwiss.png
    drink_coldOne.png
    drink_hotTea.png
    

    这个方法需要你非常的谨慎细致命名,不要让文件本身发生名称上的混乱(如果你决定饮料和三明治真的都是食物,你就应该做一个大规模的重命名,而不是简单的把他们移动到该目录下);但是和文件夹结构相比,你的程序逻辑的复杂性不会遭受太严重的改变。
    这种情况的确很糟糕。Android就是奇妙的和可怕的设计方案的大杂烩。我们现在只能希望后面到期的部分能够得到淘汰。

    点赞 评论
  • niangzhi
    niangzhi 2012-09-19 03:34

    使用assets floder
    示例代码

    InputStream is = null;
    try {
        is = this.getResources().getAssets().open("test/sample.png");
    } catch (IOException e) {
        ;
    }
    
    image = BitmapFactory.decodeStream(is);
    
    点赞 评论
  • zlQQhs
    zlQ_ 2013-02-26 06:12

    实践是检验真理的唯一标准 ,试一下不就知道

    点赞 评论
  • oSanYeCao1234567
    RoidCoder 2016-10-10 10:16

    可以创建文件夹,但是里面的资源是引用不到的

    点赞 评论

相关推荐