2010-12-01 72 views
2

我对Android中的多屏幕支持有困惑。我在android开发人员论坛上阅读了多屏幕支持文章。我的问题是,如果应用程序有15-20图像需要在设备屏幕上全屏显示。现在,如果我想支持所有屏幕,我应该放入三个可绘制文件夹ldpi,mdpi & hdpi。在这里我做了什么Android中的多屏幕支持情况下的图像

在ldpi中 - 240x320分辨率的图像 mdpi - 320x480解像度的图像 hdpi - 720x800分辨率的图像。 (我对所有三种分辨率使用相同的密度) 我认为这是不正确的做法。

我应该做什么?把不同分辨率的图像放在drawable-ldpi,drawable-mdpi & drawable-hdpi上,或者我应该使用不同密度的图像120 dpi,160 dpi & 240 dpi。如果我使用不同密度的图像,应该是他们的分辨率(应为120 dpi分辨率为240x320,160 dpi分辨率320x480 & 240 dpi分辨率为480x800)。或者,如果我使用不同的dpi图像,对于所有密度,其分辨率应该相同(320x480)。

问候, Anuj

+0

http://stackoverflow.com/questions/13659682/how-to-resize-an-image-to-fit-multiple-screen-densities那里有一些很好的选择。我的方式和按代码的方式。节省应用程序的大小代码的方式可能是最适合该应用程序。 – 2012-12-01 13:38:03

回答

1

理想情况下,您应该为不同屏幕使用不同密度的drawable。您可以使用您提到的图片尺寸。但是,您也可以只提供高dpi图像,并将它们缩小以匹配用户的设备屏幕密度。

此外,如果您希望图像以全屏显示,那么您可能必须针对横向和纵向方向以及长且不长的屏幕使用不同版本的这些图像。

最后,您可以使用ImageView小部件在不同的设备上进行适当的图像缩放。

3

Anujprashar,没有简单的回答你的问题。不同密度规格(hdpi,mdpi,ldpi)只是指平均密度范围(即hdpi约为240 ppi)。但是,hdpi可能涉及大量不同的分辨率(例如,摩托罗拉Droid是hdpi,分辨率为480x854; Nexus One为hdpi,分辨率为480x800)。所以没有固定大小的图像可以用来完全适合所有设备的全屏。

我的建议是尽可能避免使用需要图像为屏幕准确大小的布局,或者提供大于目标密度的大部分分辨率的图像(例如500x900)留下可能会被裁剪掉的额外利润(如果您熟悉这个概念的话,可以将其视为流血)。或者更简单地说,如果您不要求它们以原始像素分辨率1:1显示,则可以简单地将ImageView的scaleType设置为centerCrop,将其宽度和高度设置为fill_parent。这将扩大(或压缩)图像以适应容器,裁剪纵横比不正确的像素。

更困难的方法是为每个屏幕分辨率设置不同的图像,并在onCreate()方法中检索屏幕尺寸并根据返回的值设置图像。

+0

感谢您的回复。我正在考虑将所有分辨率(480x800和320x480)的图像放在单个可绘制文件夹中。并使用Android中的资源别名按照设备配置使用图像。 – anujprashar 2010-12-02 06:20:31

+0

如果你要走这条路线,不要把它们放在主要的可绘制文件夹中。将480x800放入drawable-hdpi中,将640x480放入mdpi中,将320x480放入ldpi文件夹中等等,并将它们命名为相同。然后,当您在代码中引用该可绘制对象时,Android将根据设备的分辨率选择正确的图像并相应地对其进行缩放。 – kcoppock 2010-12-02 13:54:46