Android 应用在重新定义现代计算在大屏幕上的呈现方式方面发挥着重要作用。但是,仅在 Chromebook 上运行移动应用无法给用户带来最佳体验。
本页详细介绍了您可以采用哪些方法来针对笔记本电脑和可转换设备量身定制用户体验。如需详细了解如何测试您的应用在这些设备上的兼容性,请参阅我们全面的测试列表。
利用对自由式多窗口模式的支持
ChromeOS 上的 Android 应用实现包括基本的多窗口模式支持。Android 会将 ChromeOS 上的应用呈现在更适合这些设备的自由式窗口容器中,而不是总是占据整个屏幕。
用户可以调整包含 Android 应用的窗口的大小,如图 1 所示。为了确保自由格式的窗口能够顺畅地调整大小并向用户显示其全部内容,请阅读窗口管理中的准则。
![](https://developer.android.google.cn/static/images/topic/arc/resizable.png?authuser=6&hl=uk)
图 1. 可调整大小的应用窗口。
您可以遵循以下最佳实践,提升应用在 ChromeOS 上运行时的用户体验:
- 在多窗口模式下正确处理 activity 生命周期,并确保继续更新界面,即使您的应用不是最顶层的聚焦窗口也是如此。
- 确保每当用户调整窗口大小时应用都会适当地调整其布局。
- 通过指定应用的启动大小来自定义其窗口的初始尺寸。
- 请注意,应用根 activity 的方向会影响其所有窗口。
自定义顶栏颜色
ChromeOS 使用应用主题为显示在应用顶部的顶栏(当用户按住窗口控件和返回按钮时显示)着色。为了使您的应用看起来精致迷人并针对 ChromeOS 进行了自定义,请在应用主题中定义 colorPrimary
值,如果可能,请在应用主题中定义 colorPrimaryDark
值。
colorPrimaryDark
用于为顶栏着色。如果仅定义了 colorPrimary
,ChromeOS 会在顶栏中使用较深的颜色。如需了解详情,请参阅样式和主题。
支持键盘、触控板和鼠标
所有 Chromebook 都带有物理键盘和触控板,部分 Chromebook 还配备触摸屏。有些设备可以从笔记本电脑转换成平板电脑。
在 ChromeOS 应用中,应支持通过鼠标、触控板和键盘输入,因此应用无需触摸屏即可使用。许多应用已经支持鼠标和触控板,无需额外的工作。不过,最好针对鼠标适当地自定义应用行为,并支持和区分鼠标输入和触控输入。
请确保:
- 所有目标都可以通过鼠标点击。
- 所有可通过触摸来滚动的界面都可以通过鼠标滚轮来滚动,如图 2 所示。
- 实现悬停状态时要经过仔细判断,以便既能提升界面曝光度,又不会向用户呈现过多悬停点,如图 3 所示。
![](https://developer.android.google.cn/static/images/topic/arc/scroll_on_mousewheel.png?authuser=6&hl=uk)
图 2. 使用鼠标滚轮进行滚动。
![](https://developer.android.google.cn/static/images/topic/arc/hover_states.png?authuser=6&hl=uk)
图 3. 按钮悬停状态。
在适当情况下,区分鼠标输入和触控输入。例如,轻触并按住某个项可能会触发多选界面,而右键点击同一项可能会触发选项菜单。
自定义光标
自定义应用的鼠标光标,以指示用户可以与其界面的哪个元素交互以及如何交互。您可以调用 setPointerIcon()
方法来设置要在用户与视图交互时使用的 PointerIcon
。
在您的应用中,显示以下所有项:
- 为文本显示 I 型指针
- 在可调整大小的层边缘显示大小调整手柄
- 为可通过点击并拖动手势平移或拖动的内容显示张开和闭合的指针
- 表示正在处理的旋转图标
PointerIcon
类提供了可用于实现自定义光标的常量。
键盘快捷键和导航
由于每台 Chromebook 都配有物理键盘,因此请提供热键来提高用户的工作效率。例如,如果应用支持打印,可以使用 Ctrl + P 打开打印对话框。
同样,使用标签页导航处理所有重要的界面元素。这对于无障碍功能尤为重要。为了符合无障碍功能标准,所有界面 Surface 都必须具有明显且符合无障碍功能要求的聚焦状态,如下图所示:
![](https://developer.android.google.cn/static/images/topic/arc/transversal_tabbing.png?authuser=6&hl=uk)
图 4. 横向 Tab 键导航。
![](https://developer.android.google.cn/static/images/topic/arc/hover_controls.png?authuser=6&hl=uk)
图 5. 将滑动手势替换为悬停光标时出现的控件。
确保为隐藏在触摸专属互动(如轻触并按住操作、滑动或其他多点触控手势)下的核心功能实现键盘或鼠标替代方案。例如,您可以提供悬停光标时出现在界面上的按钮。
如需详细了解键盘、触控板和鼠标支持,请参阅 大屏幕上的输入兼容性。
进一步增强用户输入
如需让应用实现桌面级功能,请考虑以下以工作效率为导向的输入机制。
上下文菜单
Android 上下文菜单也是一个加速器,可让用户快速转到应用中的各项功能,只需点击鼠标或点击触控板的辅助按钮,或在触摸屏上轻触并按住即可触发:
![](https://developer.android.google.cn/static/images/topic/arc/contextual_menu.png?authuser=6&hl=uk)
图 6. 右键点击时显示的上下文菜单。
拖放
通过构建拖放交互(如下图所示)可以给应用带来高效直观的效率功能。如需了解详情,请参阅拖放。
![](https://developer.android.google.cn/static/images/topic/arc/drag_and_drop.png?authuser=6&hl=uk)
图 7. 在文件树界面中拖放。
触控笔支持
触控笔支持对于绘图和记事应用至关重要。通过实现为触控笔输入使用情况量身定制的互动,为配备触控笔的 Chromebook 和平板电脑提供增强支持。
在设计触控笔交互功能时,应考虑不同触控笔硬件的潜在差异。如需触控笔 API 的大纲,请参阅 大屏幕上的输入兼容性。
让布局自适应
充分利用应用可用的屏幕空间,无论其视觉状态如何(全屏、纵向、横向或窗口化)。下面列举了一些合理使用空间的示例:
- 显示应用架构。
- 将文本长度和图片大小限制为最大宽度。
- 在应用的工具栏中更好地利用屏幕空间。
- 通过使应用适应鼠标操作而不是拇指操作,改进界面功能的位置。
- 优化视频和图片的大小,为所有媒体设定一组最大宽度和高度,并最大限度地提高可读性和可扫描性。
- 实现自适应列系统。如需了解详情,请参阅自适应布局网格。
- 根据需要使用列系统调整界面大小并修改界面。尽可能避免打开新窗口。
- 移除或降低水平滚动组件的重要性。
- 避免使用全屏模态界面。对所有非关键操作使用内嵌界面,例如进度指示器和提醒。
- 使用经过改进的界面组件,例如时间和日期选择器、文本字段以及专为鼠标、键盘和大屏幕设计的菜单。
- 为中小型修改功能使用内嵌修改、其他列或模态界面,而不是新的 activity。
- 移除或修改悬浮操作按钮 (FAB),以实现更好的键盘导航。默认情况下,FAB 位置按横向 Tab 键顺序排在最后。您应首先创建该函数,因为它是主要操作,或者将其替换为其他更高级别的功能。
![](https://developer.android.google.cn/static/images/topic/arc/responsive_layout.png?authuser=6&hl=uk)
图 8. 手机和桌面设备尺寸的屏幕上自适应布局的模拟。
更改导航模式
系统级返回按钮是从 Android 手持设备继承而来的一种模式,这种模式不太适合桌面环境。
随着应用越来越多地针对笔记本电脑环境定制其行为方式,您不妨考虑转向一种不再强调返回按钮的导航模式。通过在大屏幕界面中提供应用内返回按钮、面包屑导航或其他退出路线(如关闭或取消按钮),让应用处理自己的历史记录堆栈。
您可以通过在 <activity>
标记内进行偏好设置来控制应用是否在其窗口中显示返回按钮。将此值设为 true
会隐藏返回按钮:
<meta-data android:name="WindowManagerPreference:SuppressWindowControlNavigationButton" android:value="true" />
解决相机预览图像的问题
当应用只能在纵向模式下运行但用户在横向屏幕上运行它时,可能会出现相机问题。在这种情况下,预览或拍摄的结果可能未正确旋转。
兼容模式会改变系统在 ChromeOS 中处理事件(例如屏幕方向变化)的方式。这有助于防止在错误的屏幕方向模式下使用相机时出现问题。如需启用兼容模式,请满足以下条件:
- 目标平台至少为 Android 7.0(API 级别 24)。最低 SDK 级别可以较低。
- 使应用可调整大小。
处理设备设置
对于在 ChromeOS 上运行的应用,请考虑采用以下设备设置。
调节音量
ChromeOS 设备是固定音量设备:播放声音的应用有自己的音量控件。请遵循使用固定音量设备的准则。
调节屏幕亮度
您无法在 ChromeOS 上调整设备亮度。对 system settings
和 WindowManager.LayoutParams
的调用会被忽略。
其他学习资料
如需详细了解如何针对 Chromebook 优化 Android 应用,请参阅以下资源:
- 阅读 Android 开发者博客中的 将 Android 应用推广到 Chromebook 一文。
- 观看 2017 年 Google I/O 大会的适合 Chromebook 和大屏设备的 Android 应用会议视频。