Как нарисовать значки на циферблате у поставщика услуг Android по износу?
Используя 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
Вместо этого я мог бы просто скопировать все элементы рисования в локальный носимый модуль и обойти тип значка, передав строку, а оттуда просто нарисовать соответствующее растровое изображение. Но должен быть способ рисовать по иконке, иначе зачем она?
Я также не мог узнать от Googling, как преобразовать значок в растровое изображение, но это также кажется глупым, поскольку мне пришлось сначала преобразовать растровое изображение в значок, так как API хочет значок.
Любая помощь приветствуется.
Благодарю.
1 ответ
Хорошо, так что я не знаю, как я пропустил это, но это так просто, как
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
а потом увидел и удивился, почему я этого не пробовал.
Отредактируйте в ответ на комментарий: Если вы хотите использовать VectorDrawable, то адаптируйтесь по мере необходимости.