适用于所有屏幕尺寸的Android游戏

时间:2013-03-28 15:45:19

标签: android screen-size

我正在尝试使用~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。

如果我使用jpgs而不是pngs怎么办?我会失去多少质量?由于我只会缩小规模,这应该没事,对吧? 10 jpgs的960x720只有4.3MB。

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

  2. 屏幕的DPI分辨率根本没有考虑因素?当您希望在不同的res屏幕上显示大致相同的大小(如图标或按钮)时,只需要考虑DPI。正确的吗?

  3. 似乎这样解决了一个众所周知的模式或模板问题。其他人怎么做到了?每个人在安装后(想要避免)或9个补丁背景都使用大量下载吗?

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

    彼得

1 个答案:

答案 0 :(得分:1)

恢复死亡(线程):一种做事方式可能是提供一组位图并自己进行扩展。您既可以提供大位图并缩小它们,也可以提供道路中间位图并将其缩小(适用于大屏幕)和缩小(适用于较小尺寸)。

前者的好处是,您的艺术在大屏幕上看起来很棒,而且您将来会更加明确(如果您在代码中提供此功能)。缺点是,在低端设备上解码/加载这些位图时,您可能(并且实际上可能会)遇到内存不足/超出VM错误,即使仔细地执行此操作也是如此。所以我通常会采用第二种方法。

扩展可以通过多种方式完成,但其中一种方法是在bmp中加载默认大小(使用getResources()。openRawResource(id)或BitmapFactory.decodeResource(等),甚至更好地使用输入流或[根据一些最好的方法]使用FileDescriptor方法加载/创建),然后通过使用createScaledBitmap()创建另一个bmp或者绘制到画布将其绘制到目标Rectangle(更好的内存方式)来缩放它。 对于缩小,您可以使用像.inScaled这样的BitmapOptions,或者再次使用画布drawcall中较小的目标Rect。

以这种方式做得更好(对于游戏而言)比让Android使用这些存储桶(hdpi等)缩放更快,并且如果做得好则使用更少的内存。

但请注意,因为某些位图加载方法有点bug并且创建'bmp对于VM来说太大'错误。还要学会正确处理你的bmps;很多人和Google / Google员工说Android会这样做,你不必将你的bmps设置为null并回收()它们,但到目前为止我发现你做了。另一个警告是设置适当的选项(过滤/抗锯齿等)以防止模糊的bmps。并在BitmapOptions / canvasses / SurfaceView甚至Windows上处理不理想的颜色/格式/ dpi设置。

还有更多,但这应该有助于任何人开始。