大屏设备和外接显示器

ChromeOS 设备最明显的优势之一是其漂亮的大屏幕,以及轻松使用外接显示器的能力。如此大的屏幕空间为游戏带来了巨大潜力,但要充分利用它,可能需要进行一些额外的思考和设计工作。

屏幕方向和配置变更

有些移动应用专为小型手机设计,并将屏幕方向锁定为竖屏。这似乎可以通过减少游戏可能收到的配置更改次数和所需的布局数量来快速获胜。不过,这种选择可能会带来一些意想不到的问题 - 如果选择不处理屏幕方向变更,许多应用将无法应对其他配置变更,例如窗口大小调整、键盘连接、外接显示屏等。这些情况可能会导致意外崩溃和重启,如需了解详情,请参阅运行时变更。虽然这些变化也会发生在手机设备上,但在可折叠设备和 ChromeOS 设备上发生的频率更高,因此应妥善处理。

此外,在大屏设备(屏幕为横向)或宽高比较为方正的可折叠设备上,如果游戏固定为纵向屏幕方向,则会在侧面显示大黑边。

其他一些以手机为先的游戏可能会选择锁定其应用,使其只能以横屏模式运行。平板电脑或可转换设备用户将不得不以横向模式握持设备,这可能比在手机上更不方便,并会降低游戏的体验。对于大屏平板电脑和可转换设备,游戏在竖屏模式下可能具有足够的屏幕空间。对于某些人来说,以这种方向握持设备可能更舒适,从而让他们能够更长时间地与您的游戏互动。

根据游戏的范围和成熟度,有多种不同的方法可以解决此问题。理想情况下,游戏可以动态调整以适应不同的屏幕尺寸,从而为使用大屏设备的用户提供增强的沉浸式体验。另一种方法是,以富有创意的方式在黑色空白区域中填充有用的信息,例如统计数据、地图或聊天窗口;或者,以与游戏相关的图片作为背景来取代黑色,从而为主要游戏内容提供更美观的取景。

在屏幕尺寸允许的情况下,尽可能允许用户以纵向和横向两种屏幕方向使用您的应用。

示例 1

(左)示例益智游戏,横屏上显示黑条。(右)同一款益智游戏,现在使用图片背景来替换黑条。

拼图游戏是一款成熟的 Android 游戏,专为竖屏手机设计。在大屏横屏设备上,该应用运行时会在两侧显示黑边。由于该游戏拥有庞大且活跃的用户群,而开发者正专注于开发下一款游戏,因此他们选择为每个关卡和菜单的背景添加柔焦效果的图片,以便为游戏营造氛围,而无需重写界面。由于他们正在积极开发下一款游戏,因此开发者在新游戏中加入了横屏支持。

示例 2

(左)一款在横屏模式下优化屏幕空间的赛车游戏。(右)同一款赛车游戏,针对大屏竖屏模式进行了优化。

专为移动设备设计的赛车游戏会锁定为横屏模式,以优化手机的屏幕空间。最近,平板电脑和 ChromeOS 用户一直抱怨游戏难玩,并要求支持竖屏模式。开发者在其代码中加入了屏幕尺寸检查,如果屏幕足够大,则允许使用竖屏模式。为了仍然能够提供游戏所需的广角视图,内容会放置在屏幕中间,同时屏幕底部会显示一个额外的汽车音响界面栏,方便用户轻松更改电台,而地图和赛事统计信息则会移至屏幕顶部,从而释放挡风玻璃视图并改善游戏体验。

另请参阅 Android 大屏设备指南Android 屏幕尺寸文档

多窗口功能

游戏通常会为用户提供沉浸式全屏体验。不过,有些桌面设备或可折叠设备用户喜欢同时在单独的窗口中打开并显示聊天、音乐或视频流媒体服务。如果他们正在录制或共享自己的屏幕,那么打开并显示额外的窗口也很有用。

多窗口功能是 Android 应用和游戏的默认行为,适用于 ChromeOS 桌面设备,以及分屏模式下的手机和平板电脑。如果您希望防止游戏调整大小,请在 AndroidManifest.xml 中声明游戏不可调整大小。

android:resizeableActivity="false"

如果您的游戏可调整大小,请注意以下重要事项:

详细了解窗口管理

全屏模式

当游戏在全屏窗口中运行时,您可能希望将其置于沉浸模式,以移除窗口边框和其他令人分心的屏幕元素。如需了解详情,请参阅 Android 全屏文档

private fun hideSystemUI() {
    // Enables regular immersive mode.
    window.decorView.systemUiVisibility = (
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            or View.SYSTEM_UI_FLAG_FULLSCREEN)
}