【问题标题】:What kind of image formats should I use in an Android application?我应该在 Android 应用程序中使用哪种图像格式?
【发布时间】:2012-11-23 13:05:42
【问题描述】:

我正在为 Android 编写游戏,我想知道应该为游戏内的图形使用哪种图像。

我告诉客户以尽可能高的(和合理的)分辨率创建艺术品,我会按比例缩小它,但最近有人告诉我 SVG 会比普通的 PNG 更好 例如,因为 Android 设备使用了很多分辨率,并且必须缩放图像。大多数图形将是静止的背景或对象,但会有一些动画。我将为此使用AnimationDrawable

是否有一些关于图形文件格式的通用指南(我查看了android developer 网站,但没有找到任何东西)或者只是使用我目前拥有的任何东西?

【问题讨论】:

标签: java android graphics


【解决方案1】:

最近有人告诉我,例如 SVG 会比纯 PNG 更好

Android 本身不支持 SVG。有支持SVG的第三方库,比如this one

由于 Android 设备使用了很多分辨率,并且图像必须缩放

如果这确实是您的平面设计师告诉您的,那么您需要聘请其他平面设计师。快点。

分辨率通常是没有意义的。重要的是屏幕尺寸,对于图形来说更重要的是屏幕密度。 Android 支持不同密度的图像的多个版本,并且还可以将图像从一种密度重新采样到另一种密度,因此您可以直接“拨入”您希望支持多少密度。这是关于屏幕密度的a blog post from yesterday,Android 文档中也有大量关于此的材料。

现在,您的图形设计师可能会“在内部”使用 SVG 并生成密度缩放的 PNG 文件供您使用——这是完全合理的。

【讨论】:

  • 所以我必须为典型密度(hdpi、ldbpi 等)创建不同的图像,并且我不应该将所有内容都转储到 drwawable-land 文件夹中?
  • @AdamArold:嗯,drawable-land/ 通常是一个奇怪的选择(你有不同的图像,同名,用于纵向和横向?)。而且,正如我所指出的,“必须”是一个强有力的短语。欢迎您让 Android 重新采样您的图像,只需将一张放入密度桶中(例如,drawable-xhdpi)。如果您发现这些结果令人满意,那么您就准备好了。如果您不喜欢重新采样的图像在特定密度下的显示方式,请让您的平面设计师准备针对这些较低密度优化的同一图像的其他版本。
  • 我们可以动一下聊天吗?我突然想到了什么。
【解决方案2】:

是否有一些图形文件格式的通用指南

是的,here。它说

Android 支持三种格式的位图文件:.png(首选)、.jpg(可接受)、.gif (气馁)。

没有对 SVG 可绘制对象的原生支持,但有支持 SVG 的库

SVG support on Android

您通常会将 SVG 图像转换为每个密度的像素图像。 Android 还为图标定义了一些标准尺寸,例如Menu icons

拥有用作 SVG 的图像的来源并不是一个坏主意。 SVG 和其他基于矢量的图形通常比像素图形更好地缩放到不同的大小。特别是如果您需要放大图像(例如 Play 商店中使用的 hi-res icons)。

还要小心AnimationDrawable,它不能用于全屏动画。只是小的动画图标等等。

【讨论】:

  • 我不会使用全屏动画,只是一些小的动画对象。
  • @AdamArold 小动画很好。我看到像AnimationDrawable causes OutofMemory 这样的问题经常与动画游戏相关,所以我认为这值得一提。
  • 只有 1 个对象会被动画化。实际上它是一个相当小的,但感谢您的通知。
猜你喜欢
  • 2022-11-28
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-11
  • 2010-10-09
相关资源
最近更新 更多