为长屏幕设备做好准备

640 阅读3分钟
  • 原文作者: Android 开发者平台 Fred Chung
  • 最近几个月发布的 Android 手机型号,全面屏,特长纵横比(16:9 以上)和圆角的设计都已成为了一种潮流(如 Pixel 2 XL 和华为 Mate 10 Pro),这也再次证明了Android 生态里用户选择空间的丰富。更大纵横比的屏幕可以带给用户强烈的沉浸感,但与此同时那些还没有经过优化的应用也就会更容易被用户感知到,这甚至会带来一些负面的体验,从而影响用户对开发者的满意度。因此大家千万不要忽略多尺寸屏幕优化的重要性。我们综合了一些应用兼容性测试的经验,和大家分享 Android OS 相关的支持和最佳实践。


    支持特长屏幕

    大部分利用标准 UI 模块的 App 都会灵活适配不同的屏幕。官方文档对这方面也作出了详细的解释。但是,开发者可能要花多一点心思去适配很多游戏或 App 里的自定义界面。其中一个比较普遍的问题是对于屏幕纵横比作出错误的假设。以下列出几项比较典型的问题,以作参考。

    • 屏幕的上下、左右边缘可能会被裁剪,导致 UI 整体看起来不完整。

    • 触摸点击区和 UI 模块(如:按钮)不对齐,从而困惑用户。

    • 在圆角屏幕设备上的全屏模式,任何非常靠近角落的 UI 元素都可能位于弯曲的可视角度区域之外。假设一个电商 App 的 “下单”功能受到类似问题的影响,这就是一个大问题了。建议大家参考 Material Design 指南,在布局上留下大概 16dp 的边缘空间。

    如果响应式 UI 不适合您的场景,作为最后一步,考虑按照以下方式声明最大支持纵横比。 在特长屏幕的设备上,兼容模式会将应用边缘的显示空间以填充。

    针对 API level 26 或以上: 利用 android:maxAspectRatio 属性。

    针对 API level 25 或以下: 利用 android.max_aspect meta-data。

    需要注意的一点是最大支持纵横比的值只对不支持 resizableActivity 的 Activity 才有效。

    请参阅文档的细节:

    developer.android.google.cn/guide/pract…


    多应用窗口显示

    特长屏幕设备为多窗口显示的场景提供了更多的可能性,这往往可以提高用户的生产力。Android 7.0 以上的版本更为开发者提供了多窗口的标准支持。

    • 当加载 Activity 时,可以利用新的 FLAG_ACTIVITY_LAUNCH_ADJACENT Intent Flag 来告知系统提供多窗口支持。需要注意的一点,是在活跃屏幕那一边的 Activity 才被认为是处于 Activity Task 的顶部,而不活跃的 Activity 则会被暂停。这意味着您不应该假设已被暂停的 Activity 一定是不可见的。

    • 如果多窗口模式不适用于您的场景(例如全屏游戏),您可以在 API level 24 以上,利用 manifest 的 android:resizeableActivity="false" 属性来禁用多窗口模式。

    • 在布局 XML 里,您可以定义 Activity 尺寸的默认值和最低支持值,也可以选择性地支持跨 Activity Drag-and-Drop 等。

    充分的测试是一项关键。若开发者没有长屏幕设备,我们建议在模拟器上设置合适的屏幕尺寸和屏幕分辨率等硬件属性,从而进行测试。

    每一位开发者都希望在长屏幕设备上给用户留下深刻的印象。我们很期待看到更多针对不同屏幕配置优化的 App 和游戏!