如何在我的表盘上绘制复杂功能槽?

How can I draw a complication slot on my watch face?

我正在开发自己的 Android 表盘,到目前为止一切正常。现在,我尝试创建我的第一个复杂功能以显示秒数。我知道我需要为这种复杂情况创建自己的数据提供者。我已经在 YouTube 上看过一些视频并阅读了一些文档。我的问题是:

How can I create a complication slot to be displayed on my what face?

最简单的方法是使用 ComplicaitonDrawable。它将为您处理显示内容(倾斜、文本、图标等)的所有逻辑。它也可以设计成与您的表盘融为一体。确保在您的表盘收到回调时用复杂数据填充它:

@Override
public void onComplicationDataUpdate(int id, ComplicationData data) {
    mComplicationDrawable.setComplicationData(data);
}

How can I set its position on the watch face?

ComplicationDrawable可以很容易地画在canvas上的任何地方:

mComplicationDrawable.setBounds(myComplicationBounds);
mComplicationDrawable.draw(canvas, currentTimeMillis);

Will I have to create an activity for that?

您不需要 activity 来设置复杂槽的位置(除非您希望用户能够 select/change 该位置)。

您确实需要一个设置 activity 让用户 select 成为您的复杂槽的数据提供者。 Google 非常友好地提供了一个示例表盘,其中显示了执行此操作的推荐方法。它在 GitHub.

上可用