【问题标题】:Android game working on all screen sizes适用于所有屏幕尺寸的 Android 游戏
【发布时间】:2015-06-12 14:21:10
【问题描述】:

我正在尝试为大约 10 个屏幕的 Android 游戏指定艺术尺寸。我希望游戏能够在 API 8+ 以及除“小”之外的所有尺寸屏幕上运行。

由于我们使用的是 API 8,我使用旧的“4 类屏幕”功能 - 我计划支持

  • 正常(480 x 320,最高 640 x 480)
  • 大(640 x 480,最高 960 x 720)
  • xlarge(960 x 720,最高 1920 x 1200)

1920x1200 png 文件约为 4.1MB。因此,其中 10 个是 41MB,我们几乎突破了 50 MB 的应用程序大小限制(Play 商店)。

所以三个问题: 1.人们如何支持游戏画面的精细美术?我是否必须使用平淡无奇的 9 个补丁 pngs 文件作为背景?或者是否可以将所有艺术品存储为 960x720 尺寸,并允许 Android 针对大屏幕和普通屏幕调整其大小? 10 个这种大小的背景文件总共大约 15 MB,剩下 35 MB 用于其他所有文件。

如果我使用 jpg 而不是 png 会怎样?我会损失多少质量?因为我只会缩小规模,这应该没问题,对吧? 10 张 960x720 的 jpg 文件只有 4.3MB。

  1. 如果我允许 Android 调整它的大小,我如何支持宽高比与 960x720 的 4:3 不同的屏幕?有没有办法在布局 XML 中指定“使用大文件夹中的可绘制对象,但将其“信箱”放到屏幕上,以便最长的尺寸适合”? (对于大于 960x720 的超大屏幕,只需将 drawable 放在屏幕中间 - 根本不要拉伸它)?

  2. 屏幕的 DPI 分辨率根本不考虑这个因素吗?仅当您希望某些东西在不同分辨率屏幕上的大小大致相同时才需要考虑 DPI,例如图标或按钮。对吗?

看起来像这样应该使用众所周知的模式或模板来解决问题。其他人是如何做到的?每个人都是在安装后使用大量下载(希望避免)还是使用 9 个补丁背景?

提前感谢您的任何建议。我在这里搜索了几个术语,并查看了大约 25 个过去的答案,但没有找到我要查找的内容。

彼得

【问题讨论】:

  • 您可以使用 photoshop、gimp 或 paint.net 来调整图像的压缩级别。有时这是大小和压缩之间的平衡。
  • 除了 Davos555 的好建议,我应该看看以 RGB555 格式存储 png 文件。这使用 2 个字节/像素,而不是 4 个字节。它丢弃 alpha 字节,并将 8 个颜色位压缩为 5 个。stackoverflow.com/questions/15595457/…
  • 这是一个相关的问题,它的答案完全错误。 stackoverflow.com/questions/5393359/…

标签: android screen-size


【解决方案1】:

复活死者(线程):一种做事方式可能是只提供一组位图并自己进行缩放。您可以提供大的位图并按比例缩小它们,或者提供中间位图并按比例放大(对于大屏幕)和缩小(对于较小的尺寸)。

前者的好处是您的艺术作品在大屏幕上看起来很棒,而且您更有未来的证明(如果您在代码中提供了这一点)。不利的一面是,在低端设备上解码/加载这些位图时,您可能(并且实际上很可能会)遇到内存不足/超出 VM 错误,即使是在小心操作时也是如此。所以我通常会选择第二种方法。

可以通过多种方式进行放大,但一种是以默认大小加载 bmp(使用 getResources().openRawResource(id) 或 BitmapFactory.decodeResource(etc) 或更好地使用 inputstreams 或 [根据一些最好的方法] 使用 FileDescriptor 方法加载/创建)然后通过使用 createScaledBitmap() 创建另一个 bmp 或者如果绘制到画布将其绘制到目标矩形来缩放它(更好的内存)。 要缩小比例,您可以使用 .inScaled 之类的 BitmapOptions,或者再次在画布 drawcall 中使用较小的目标 Rect。

这样做比让 Android 使用这些存储桶(hdpi 等)为您扩展并且如果操作正确的话使用更少的内存更好并且(对于游戏)更快。

但要小心,因为某些位图加载方法有点错误,并会产生“bmp 对于 VM 来说太大”错误。还要学会正确处理你的 bmp;很多人和谷歌/谷歌员工说 Android 会这样做,你不必将 bmps 设置为 null 并 recycle() 它们,但到目前为止我发现你这样做了。另一个警告是设置适当的选项(过滤/抗锯齿等)以防止 bmp 模糊。并注意 BitmapOptions/canvasses/Sur​​faceViews 甚至窗口上的非最佳颜色/格式/dpi 设置。

还有更多,但这应该可以帮助任何人入门。

【讨论】:

    猜你喜欢
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多