30

在 iOS 中准备图形很简单。有正常图像(高度 x 宽度)或 @2x(2 倍高度 x 2 倍宽度)的视网膜图像。

但是,由于我是 Android 新手,我在 Eclipse 中看到了大量的 drawable-* 文件夹,其中 * 可以是“hdpi”或“ldpi”或“mdpi”或“xhdpi”或“xxhdpi”。有人可以非常清楚和简单地为我列出我必须做什么来满足每种显示可能性,以便我的图像在每种情况下看起来都正确吗?我设想答案将是一个项目符号列表,其中列出了每个“*”和一个包含必须完成的事情的子项目符号列表。

我也非常喜欢从最高密度和最大尺寸的图像开始并逐渐减少的答案,因为我将在 Photoshop 中创建并将降低主图像的质量。提前致谢!

4

4 回答 4

31

不久前我从这个网站上得到了这个,它仍然派上用场

xlarge screens are at least 960dp x 720dp
large screens are at least 640dp x 480dp
normal screens are at least 470dp x 320dp
small screens are at least 426dp x 320dp
Generalised Dpi values for screens:

ldpi Resources for low-density (ldpi) screens (~120dpi)
mdpi Resources for medium-density (mdpi) screens (~160dpi). (This is the baseline density.)
hdpi Resources for high-density (hdpi) screens (~240dpi).
xhdpi Resources for extra high-density (xhdpi) screens (~320dpi).
Therefore generalised size of your resources (assuming they are full screen):

ldpi
Vertical = 426 * 120 / 160 = 319.5px
Horizontal = 320 * 120 / 160 = 240px
mdpi
Vertical = 470 * 160 / 160 = 470px
Horizontal = 320 * 160 / 160 = 320px
hdpi
Vertical = 640 * 240 / 160 = 960px
Horizontal = 480 * 240 / 160 = 720px
xhdpi
Vertical = 960 * 320 / 160 = 1920px
Horizontal = 720 * 320 / 160 = 1440px

px = dp*dpi/160
于 2013-05-03T05:29:58.483 回答
10

在 Android Studio 中,只需File -> New -> Image Asset直接从 IDE 中创建图像即可。

于 2015-07-07T19:55:56.543 回答
7

该Android Asset Studio有一个在线工具, Eclipse 中还有 File|New|Android Icon Set

于 2013-05-03T05:10:14.790 回答
7

在 Android 上,我们通常以“dp”或“dip”为单位处理图像大小,它们代表与设备无关的像素。1 dip = 1 像素,在 mdpi 屏幕上。那里有许多具有不同屏幕密度的设备,而不仅仅是普通和视网膜,因此设备的屏幕可能会落入多个 DPI 存储桶:

  • ldpi(低 dpi):约 120 dpi
  • mdpi(中等 dpi):约 160 dpi
  • hdpi(高 dpi):大约 240 dpi
  • xhdpi(超高 dpi):大约 320 dpi

请注意,这些是存储桶,因此具有 170 dpi 屏幕的设备将被视为 mdpi 设备。

假设您在 PS 中有一个基于矢量的图像,并且您需要为 Android 创建一个图像资源,并且您希望支持所有这些屏幕密度。假设图像需要 100x100 dip 大。因此,您为 mdpi 创建 100x100 像素版本,为 hdpi 创建 150x150 像素版本,为 xhdpi 创建 200x200 像素版本,为 ldpi 创建 75x75 像素版本。您可以将 Android 上的“mdpi - xhdpi”视为 iOS 上的“正常 - 视网膜”。

至于您可以使用的最大图像尺寸,我真的不能说。据我所知,没有硬性限制,但由于堆限制,设备显然无法在不进行下采样的情况下将 20000x20000 位图加载到内存中。

于 2013-05-03T05:20:01.923 回答