针对 ChromeOS 优化应用

Android 应用在重新定义现代计算在大屏幕上的呈现方式方面发挥着重要作用。但仅仅在 Chromebook 上运行移动应用并不能为用户提供最佳体验。

本页详细介绍了您可以采用哪些方法来为笔记本电脑和变形本之类的设备量身定制体验。如需详细了解如何测试您的应用在这些设备上的兼容性,请参阅我们全面的测试列表

利用对自由式多窗口模式的支持

ChromeOS 上的 Android 应用实现提供基本的多窗口模式支持。并非始终占据整个屏幕空间,而是将 ChromeOS 上的应用呈现在自由窗口容器中,这种容器更适合此类设备。

用户可以调整包含 Android 应用的窗口的大小,如图 1 所示。为确保自由格式的窗口能够顺畅地调整大小,并向用户显示其全部内容,请阅读窗口管理中的准则。

图 1. 可调整大小的应用窗口。

您可以遵循以下最佳实践,改善应用在 ChromeOS 上运行时的用户体验:

  • 在多窗口模式下正确处理 activity 生命周期,并确保不断更新界面,即使您的应用不是最顶层的聚焦窗口也是如此。
  • 确保每当用户调整窗口大小时应用都会适当地调整其布局。
  • 通过指定应用的启动大小来自定义其窗口的初始尺寸。
  • 请注意,应用的根 activity 的方向会影响它的所有窗口。

自定义顶栏颜色

ChromeOS 使用应用主题为显示在应用顶部的顶栏(当用户按住窗口控件和返回按钮时显示)着色。为使应用看起来针对 ChromeOS 美观和自定义,请在应用的主题中定义 colorPrimary 值,并尽可能定义 colorPrimaryDark 值。

colorPrimaryDark 用于为顶栏着色。如果仅定义了 colorPrimary,ChromeOS 会在顶栏中使用较深的版本。如需了解详情,请参阅样式和主题

支持键盘、触控板和鼠标

所有 Chromebook 都带有物理键盘和触控板,部分 Chromebook 还配备触摸屏。有些设备可以从笔记本电脑转换成平板电脑。

在您的 ChromeOS 应用中,支持通过鼠标、触控板和键盘进行输入,以便用户在没有触摸屏的情况下使用应用。许多应用已支持鼠标和触控板,无需额外的工作。不过,最好针对鼠标适当地自定义应用的行为,并且支持并区分鼠标和触摸输入。

确保:

  • 所有目标都可通过鼠标点击。
  • 所有可通过触摸来滚动的界面都可以通过鼠标滚轮来滚动,如图 2 所示。
  • 实现悬停状态时需要仔细判断,以免用户感到应接不暇,从而改善界面发现体验,如图 3 所示。

图 2. 使用鼠标滚轮进行滚动。

图 3. 按钮悬停状态。

在适当的情况下,区分鼠标和触摸输入。例如,轻触并按住某项内容可能会触发多选界面,而右键点击同一项可能会触发选项菜单。

自定义光标

自定义应用的鼠标光标,以指示用户可以与界面中的哪个元素互动以及如何互动。您可以调用 setPointerIcon() 方法来设置要在用户与视图交互时使用的 PointerIcon

在您的应用中,显示以下所有项:

  • 为文本显示 I 型指针
  • 在可调整大小的层边缘显示大小调整手柄
  • 为可使用点击和拖动手势平移或拖动的内容显示张开和闭手指针
  • 表示正在处理的旋转图标

PointerIcon 类提供了可用于实现自定义光标的常量

键盘快捷键和导航

由于每台 Chromebook 都配有实体键盘,因此请提供热键来帮助用户提高工作效率。例如,如果您的应用支持打印,您可以使用 Ctrl + P 打开打印对话框。

同样,使用 Tab 键导航处理所有重要的界面元素。这对于无障碍功能尤为重要。为了符合无障碍功能标准,所有界面 surface 都必须具有明显且符合无障碍功能要求的聚焦状态,如下图所示:

图 4. 横向 Tab 键导航。

图 5. 将滑动手势替换为悬停光标时出现的控件。

确保为隐藏在触摸专用互动(例如轻触并按住操作、滑动或其他多点触控手势)下的核心功能实现键盘或鼠标替代方案。例如,您可以提供悬停光标时出现在界面上的按钮作为解决方案。

如需详细了解键盘、触控板和鼠标支持,请参阅 大屏幕上的输入兼容性

进一步增强用户输入

如需让应用实现桌面级功能,请考虑使用以下以效率为导向的输入方式。

上下文菜单

Android 上下文菜单也是一个加速器,可让用户快速转到应用的各种功能,只需点击鼠标或点击触控板的辅助按钮,或者轻触并按住触摸屏即可触发:

图 6. 右键点击时显示的上下文菜单。

拖放

构建拖放互动(如下图所示)可以为应用带来高效直观的功能,从而帮助用户提高工作效率。如需了解详情,请参阅拖放

图 7. 在文件树界面中拖放。

触控笔支持

触控笔支持对于绘图和记事应用至关重要。通过实现为触控笔输入而量身定制的交互方式,为配有触控笔的 Chromebook 和平板电脑提供更好的支持。

在设计触控笔交互功能时,应考虑不同触控笔硬件的潜在差异。如需简要了解触控笔 API,请参阅 大屏幕上的输入兼容性

让布局自适应

充分利用应用可用的屏幕空间,而不考虑应用的视觉状态(全屏、纵向、横向或窗口化)。以下是合理利用空间的一些示例:

  • 显示应用架构。
  • 将文本长度和图片大小限制为最大宽度。
  • 在应用的工具栏中更好地利用屏幕空间。
  • 通过使应用适应鼠标操作(而不是拇指操作)来改进界面功能的位置。
  • 优化视频和图片的大小,为所有媒体设定一组最大宽度和高度,并最大限度地提高可读性和可扫描性。
  • 实现自适应列系统。如需了解详情,请参阅自适应布局网格
  • 根据需要使用列系统调整界面大小并进行修改。尽可能避免打开新窗口。
  • 移除或降低水平滚动组件的重要性。
  • 避免使用全屏模式界面。对所有非关键操作使用内嵌界面,例如进度指示器和提醒。
  • 使用经过改进的界面组件,例如专为鼠标、键盘和大屏幕设计的时间和日期选择器、文本字段和菜单。
  • 对于中小型修改功能,请使用内嵌修改、附加列或模态界面,而不是新的 activity。
  • 移除或修改悬浮操作按钮 (FAB),以实现更好的键盘导航。默认情况下,FAB 位置按横向 Tab 键导航顺序最后显示。您应该将其放在首位,因为它是主要操作,或者将其替换为其他更高级别的功能。

图 8. 手机和桌面设备尺寸的屏幕上自适应布局的模拟。

系统级返回按钮是从 Android 手持设备继承而来的一种模式,这种模式不太适合桌面环境。

随着应用越来越多地针对笔记本电脑环境定制其行为方式,您不妨考虑转向一种不再强调返回按钮的导航模式。让应用处理自己的历史记录堆栈,方法是在其大屏幕界面中提供应用内返回按钮、面包屑导航或其他退出路线(如关闭或取消按钮)。

您可以通过在 <activity> 标记内进行偏好设置来控制应用是否在其窗口中显示返回按钮。设为 true 会隐藏返回按钮:

<meta-data android:name="WindowManagerPreference:SuppressWindowControlNavigationButton" android:value="true" />

解决相机预览图像的问题

当应用只能在纵向模式下运行但用户在横向屏幕上运行它时,可能会出现相机问题。在这种情况下,预览或拍摄的结果可能会错误地旋转。

兼容模式会改变系统在 ChromeOS 中处理事件(如屏幕方向变化)的方式。这有助于防止在错误的屏幕方向模式下使用相机时出现问题。如需启用兼容模式,请满足以下条件:

  • 目标平台至少为 Android 7.0(API 级别 24)。最低 SDK 级别可以较低。
  • 使应用可调整大小。

处理设备设置

对于在 ChromeOS 上运行的应用,请考虑以下设备设置。

调节音量

ChromeOS 设备是固定音量设备:播放声音的应用都有自己的音量控件。请遵循使用固定音量设备的准则。

调节屏幕亮度

您无法在 ChromeOS 上调整设备亮度。对 system settingsWindowManager.LayoutParams 的调用会被忽略。

其他学习资料

如需详细了解如何针对 Chromebook 优化 Android 应用,请参阅以下资源: