在文件夹中存储不同密度的可绘制资源

4

我有两个问题与存储相应文件夹中的可绘制对象有关,即.. ldpi、mdpi..我在任何地方都找不到答案。

  1. 我的文件夹如下:

enter image description here

由于我拥有所有可能的文件夹名称,即ldpi、mdpi、hdpi、xhdpi、xxhdpi,我应该删除默认的drawable文件夹吗?

还是应该将所有文件从drawable-mdpi移动到默认的drawable文件夹并删除drawable-mdpi文件夹

  1. I am using few xml files as drawables, which are selectors, custom backgrounds etc.. Which contain the image references like

    <item android:drawable="@drawable/ic_vote_clicked" android:state_pressed="true"/>
    <item android:drawable="@drawable/ic_vote_clicked" android:state_focused="true"/>
    <item android:drawable="@drawable/ic_vote"/>
    

在哪里放置这些 xml 文件?每个文件夹中都要放吗?还是放在默认的drawable文件夹中?
无论如何,像@drawable/ic_vote的png文件都在每个文件夹中。

1
XML文件会被送到默认文件夹。那些没有针对每个维度量身定制的图像也会被送到默认文件夹,最后是备用图片,它们会被送到默认文件夹(通常是为了以防将来添加新的选择器)。 - njzk2
5个回答

7

与dpi无关的任何内容都应放在drawable文件夹中。

与dpi有关的其他任何内容都应放在相应的dpi文件夹中。

没有理由删除任何一个文件夹。

所以你的xml文件应该放在drawable文件夹中。

此外,无论它们在哪个文件夹中,你仍然使用@drawable/进行引用,它会找到正确的文件。


任何与 DPI 无关的内容都应该放在 drawable 文件夹中。你的意思是 XML 文件吗? - user1537779
所以,我将把所有的可绘制对象放在各自的文件夹中,而mdpi图像则放在默认文件夹中(为了安全起见)。但是XML文件只在默认的drawable文件夹中,对吧? - user1537779
@AshMv 布局应该放在layouts文件夹中。XML可绘制对象应该放在drawables文件夹中。 - IAmGroot
@user1537779 是的,没错。mdpi 图片放在 mdpi 文件夹中,而 xml 文件则放在 drawables 文件夹中。因为 xml 文件不依赖于 DPI。至于有人说如果 drawables 文件夹中没有图片会出错,那是不正确的。它会将 MDPI 图像调整大小到 HDPI。但建议也要有 hdpi 图像。 - IAmGroot

2
Android首先在相应的密度特定文件夹中检查资源,例如:中密度屏幕的ic_launcher.png将首先在drawable-mdpi文件夹中搜索。如果找到了,那么很好。如果图像不存在,则Android会从drawable文件夹中选择默认值。
因此,为了具有特定于密度的图像资源,请将它们保存在各自的文件夹中,并在drawable文件夹中复制一份[仅为安全起见]。
对于xml资源,请只将其保存在drawable文件夹中。
希望这有所帮助。

根据“如果图片不存在,则Android从可绘制文件夹中选择默认值”的规则,如果默认文件夹中也没有该图片,会发生什么情况呢?因为我曾经在除了“hdpi”之外的所有文件夹中都漏掉了一张图片,但是一个中等大小的设备仍然选择了那张图片。+1。非常感谢。 - user1537779
如果默认文件夹中也没有图片会发生什么? - 安卓会抛出一个异常。 - joozek

2
我为drawable创建了五个文件夹,即ldpi、mdpi、hdpi、xhdpi和xxhdpi。对于layout,我创建了三个文件夹,即layout、layout-large和layout-xlarge。 我的项目要求是支持多设备。它在所有设备上都能很好地运行。 问题出现在10英寸和7英寸平板电脑上。为了解决这个问题,我创建了layout-large和layout-xlarge文件夹,并将相应的文件放在相应的文件夹中。现在一切都正常工作。 因此,强烈建议您创建相应的文件夹。不要将所有内容都移动到drawable或layout文件夹中。

0

将xml文件放入默认的drawable文件夹中。不要更改其他文件。


0

你不应该删除这些文件夹中的任何一个。

Drawable-density 文件夹用于添加所有元素,例如 png 文件。在 drawable 文件夹中,您可以添加通用图形,也可以使用 XML 结构(选择器等)指定特定图形。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接