跳转到相应内容

最常访问

最近访问

navigation

解决常见问题

为 Android Wear 创建自定义表盘与创建通知和可穿戴式设备特定的 Activity 截然不同。本课将向您介绍在实现最初几个表盘时如何解决遇到的一些问题。

检测屏幕的形状

一些 Android Wear 设备具有方形屏幕,而其他设备则具有圆形屏幕。具有圆形屏幕的设备可在屏幕底部包含插边(或“下巴”)。如设计指南中所述,您的表盘应适应并利用屏幕的特定形状。

Android Wear 让您的表盘可以在运行时确定屏幕形状。要检测屏幕是方形还是圆形,请按照如下方式在 CanvasWatchFaceService.Engine 类中替换 onApplyWindowInsets() 函数:

private class Engine extends CanvasWatchFaceService.Engine {
    boolean mIsRound;
    int mChinSize;

    @Override
    public void onApplyWindowInsets(WindowInsets insets) {
        super.onApplyWindowInsets(insets);
        mIsRound = insets.isRound();
        mChinSize = insets.getSystemWindowInsetBottom();
    }
    ...
}

要在绘制表盘时适应您的设计,请检查 mIsRoundmChinSize 成员变量的值。

适应提示卡

图 1. 当通知卡出现时,一些模拟表盘需要进行调整。

:提示卡仅出现在 Wear 1.x 应用中。

在用户接收通知时,通知卡可能会占据大部分的屏幕,具体取决于系统界面样式。您的表盘应适应这些情况,确保用户在通知卡出现时仍能看到时间。

在通知卡出现时,模拟表盘可以作出调整,如缩小表盘,让表盘位于提示卡未覆盖的屏幕部分内。在提示卡未覆盖的屏幕区域显示时间的数字表盘通常不需要调整。要确定提示卡上的可用空间,以便适应您的表盘,请使用 WatchFaceService.Engine.getPeekCardPosition() 函数。

在微光模式下,提示卡拥有透明背景。在微光模式下,如果您的表盘在卡片附近包含详细信息,请考虑在详细信息周围绘制黑色矩形,以确保用户能够阅读卡片的内容。

配置系统指示器

要确保系统指示器保持可见,您可以配置它们在屏幕上的位置,以及它们在您创建 WatchFaceStyle 实例时是否需要背景保护:

如需了解与系统指示器有关的详细信息,请参阅配置系统界面和阅读设计指南

使用相对测量值

不同制造商的 Android Wear 设备的屏幕大小和分辨率各不相同。您的表盘应通过使用相对测量值而不是绝对像素值来适应这些变化。

在绘制表盘时,您可以使用 Canvas.getWidth()Canvas.getHeight() 函数获取画布的大小,并使用属于所检测屏幕大小一部分的值来设置图形元素的位置。如果您调整表盘元素的大小以响应提示卡,请使用属于提示卡上方剩余空间一部分的值来重新绘制您的表盘。

此网站会使用 Cookie 来存储您在此网站上指定的语言和显示选项偏好设置。

获取最新的 Android Developers 资讯和提示,助您在 Google Play 上取得成功。

* 必填字段

成功!

在微信上关注 Google Developers

要以浏览此网站吗?

您请求访问的是网页,但是您为此网站设置的语言偏好为

要更改您的语言偏好设置并以浏览此网站吗?如果以后您想要更改语言偏好设置,请使用每个页面底部的语言菜单。

该类需要 或更高的 API 级别

此文档已被隐藏,因为您为该文档选择的 API 级别是 。您可以使用左侧导航栏上方的选择器来更改文档的 API 级别。

要详细了解如何根据您的应用需求指定 API 级别,请参阅支持不同平台版本

Take a short survey?
Help us improve the Android developer experience. (April 2018 — Developer Survey)