如何为所有 Android 分辨率准备图像?

Posted

技术标签:

【中文标题】如何为所有 Android 分辨率准备图像?【英文标题】:How do I prepare images for all the Android resolutions? 【发布时间】:2013-04-27 10:29:43 【问题描述】:

ios 中准备图形很简单。有普通图像(高 x 宽)或 @2x(2 倍高 x 2 倍宽)的视网膜图像。

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

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

【问题讨论】:

developer.android.com/guide/practices/…。检查文档。完整阅读文档。 developer.android.com/guide/practices/screens_support.html 和 developer.android.com/training/multiscreen/screensizes.html 这个chart 也应该有帮助。 看看这个***.com/questions/16706076/… 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

我只能找到创建图标的选项。如何导入要在项目中使用的任何图像?【参考方案3】:

在 Android 上,我们通常以“dp”或“dip”为单位处理图像大小,“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 上的“正常 - Retina”。

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

【讨论】:

更多解释:屏幕越大,分辨率越高,dp测量值越高。一些相同尺寸的屏幕有不同的像素数,也就是不同的dpi。所以他们需要一种不同的资源(显然是具有更多像素的高分辨率资源)。【参考方案4】:

有一个在线工具Android Asset Studio 还有 Eclipse 中的 File|New|Android 图标集

【讨论】:

这些文件是不是太小了,无法在移动设备上显示图像?不只是为了Icon吗? 更新了链接。不确定它是否是官方工具。 AS 本身现在有一个类似的内置工具。 AS 工具是为图标大小的图像设计的,所以它非常有限。

以上是关于如何为所有 Android 分辨率准备图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何为所有分辨率制作全屏图像

如何为 Android 创建 Ziggeo 嵌入式录像机

如何在imageView上设置自动布局约束以获得良好的分辨率图像?

如何为支持视网膜显示的 ipad 应用程序设置图像

Android番外篇 关于移动端开发的设备属性说明(上)

如何处理所有可用 iPhone 分辨率的图像比例?