4

使用 Complications API 有一个图标类型,但是在绘制图标时我不知道该怎么做。

当我绘制实际的表盘时,似乎没有 drawIcon 方法。例如像 canvas.drawIcon(icon) 这样的东西。我只能看到如何绘制位图。

在我的 drawComplications 方法中,我有这个:

} else if (complicationData.getType() == ComplicationData.TYPE_ICON) {
                Icon icon = complicationData.getIcon();

然后如何将图标绘制到画布上?

这里的代码实验室没有告诉我们如何绘制图标:https ://codelabs.developers.google.com/codelabs/complications/index.html?index=..%2F..%2Findex#3

相反,我可以将所有可绘制对象复制到本地可穿戴模块,并通过传入字符串绕过图标​​类型,然后从那里绘制适当的位图。但是必须有一种从图标中绘制的方法,否则为什么要有它?

我也无法从谷歌搜索中找到如何将图标转换为位图,但这似乎也很愚蠢,因为我必须首先将位图转换为图标,因为 API 需要一个图标。

任何帮助表示赞赏。

谢谢。

4

1 回答 1

5

好的,所以我不知道我是怎么错过的,但这很简单

Drawable drawable = icon.loadDrawable(getApplicationContext());

然后只需执行您可能已经知道的操作:

if (drawable instanceof BitmapDrawable) {
    Bitmap bitmap;
    bitmap = ((BitmapDrawable) drawable).getBitmap();
    canvas.drawBitmap(bitmap, complicationsX, mTopComplicationY, null);
}

我在看这里

https://developer.android.com/reference/android/graphics/drawable/Icon.html#loadDrawable(android.content.Context)

然后看到它,想知道为什么我没有尝试过。

编辑以回应评论:如果您想使用 VectorDrawable,请根据需要进行调整。

于 2017-01-11T16:22:27.140 回答