2013-02-11 70 views
3

我正在开发一个Android应用程序和我想使用图像作为活动的背景。我将API 8定位到最新版本。我想知道什么是最好的方法来做到这一点。支持所有屏幕尺寸和Android版本

我读过Supporting Different Screen SizesSupporting Multiple Screens

所以,我为这个尺寸的每个背景制作了4张图片:320x480,480x800,600px,800x1280。首先,我将这些文件分别放在这个文件夹中:drawable-sw320dp, drawable-sw480dp, drawable-sw600dp, drawable-sw720dp。然后,我意识到这只适用于Android 3.2及更高版本,所以我需要添加小,普通,大和xlarge文件夹。为了不重复文件,我遵循了this section of the first article的想法。

最终结构是:

  • drawable文件夹内的所有图像,以针对每个维度
  • XML文件不同的名称中的每个这种文件夹:values-sw320dp, values-sw480dp, values-sw600dp, values-sw720dp, values-small, values-normal, values-large, values-xlarge

例如,为我主要活动的背景:

  • drawable\bg_main_320.png
  • drawable\bg_main_480.png
  • drawable\bg_main_600.png
  • drawable\bg_main_720.png
  • 在上面提到的八个文件夹
  • drawables.xml

drawables.xmlvalues-sw480dpvalues-normal文件夹中的内容是:

<resources> 
    <item name="bg_main" type="drawable">@drawable/bg_main_480</item> 
</resources> 

我的Android 2.3.7和4.0.3测试这一点,它是工作的罚款。但是,我对每张图像都得到了这个Lint警告:“在无密度文件夹中找到位图可绘制res/drawable/bg_main_480.png问题:确保图像未在密度独立的可绘制文件夹中定义。我知道它是什么意思,但我不会继续为每个dp创建更多的图像,因为它毫无意义。

我正在使用的结构是否正确?你有什么建议?

回答

8

/res/drawable不应该有任何图像文件,它应该只包括使用XML定义的drawables。您应该根据目标像素密度将您的实际图像文件放在合格的可绘制目录中。如果你不想指定任何限定,将它们放置在 /res/drawable-nodpi

+0

Lint帮助说:“如果图标真的是密度独立的(例如纯色),您可以将它放在drawable-nodpi中。”所以,我不确定使用该文件夹是否正确。无论如何,我用的是正确的结构吗? (尺寸和文件夹) – IvanRF 2013-02-11 15:51:58

+0

它看起来可以工作,但您必须用各种设备形状因素来测试。你绝对需要这样使用图像吗?如果有任何方法可以使用九幅图像或平铺图像,则可以让您的生活更轻松。 – Karakuri 2013-02-11 15:58:01

+0

感谢您的回答。现在,我将把图像移动到/ res/drawable-nodpi。也许,在未来,我会想办法用更复杂的可绘图来重建图像。 – IvanRF 2013-02-11 19:25:23

-1

您可以在这里找到有价值的信息,在“资源” info

,也forlder你可以看到不同的可绘制: 36x36的低密度

48x48的用于中密度

最高72x72用于高密度

96x96的额外的高密度

你可以把你的文件的特定分辨率。

+0

您是否看过这篇文章?我已经提到该文章和问题不是关于dp文件夹。 – IvanRF 2013-02-11 15:55:00