2

我对 android 中的多屏幕支持感到困惑。我已经阅读了 android 开发者论坛上关于多屏支持的文章。我的问题是应用程序是否有 15-20 张图像需要在设备屏幕上全屏显示。现在,如果我想支持所有屏幕,我应该在三个可绘制文件夹 ldpi、mdpi 和 hdpi 中放入什么。这是我所做的

在 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)。

问候, 阿努杰

4

2 回答 2

3

Anujprashar,您的问题没有简单的答案。不同的密度规格(hdpi、mdpi、ldpi)只是指密度的平均范围(即 hdpi 约为 240 ppi)。但是,hdpi 可以指代大量不同的分辨率(例如 Motorola Droid 是 hdpi,分辨率 480x854;Nexus One 是 hdpi,分辨率 480x800)。所以没有固定尺寸的图像可以用来完美地适应所有设备的全屏。

我的建议是,如果可能的话,要么避免使用要求图像与屏幕大小完全相同的布局,要么提供大于该目标密度(例如 500x900)的大多数分辨率的图像,从而留下额外的边距可能会被裁剪掉(如果您熟悉打印的概念,可以将其视为出血)。

或者更简单地说,如果您不要求它们以原始像素分辨率 1:1 显示,您可以简单地将 ImageView 的 scaleType 设置为centerCrop,并将其宽度和高度设置为fill_parent。这将扩展(或压缩)图像以适合容器,如果纵横比不正确,则会裁剪掉像素。

更困难(而且效率低得多)的方法是为每个屏幕分辨率设置不同的图像,并在 onCreate() 中使用一个方法来检索屏幕尺寸并根据返回的值设置图像。

于 2010-12-01T17:42:42.083 回答
1

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

此外,如果您希望全屏显示图像,您可能必须为横向和纵向以及长屏幕和非长屏幕设置这些图像的不同版本。

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

于 2010-12-01T20:30:07.763 回答