我开始使用Google's Sample app作为参考来开发Android Wear表盘。我遇到了一个问题,我不想在我的并发症上涂上色彩。具体来说,谷歌助手的并发症。但是,无论我做什么,谷歌助手的并发症都会以某种颜色出现。

查看Google的代码时,我只能找到对颜色进行着色的单一参考:

    private void setComplicationsActiveAndAmbientColors(int primaryComplicationColor) {
        int complicationId;
        ComplicationDrawable complicationDrawable;

        for (int i = 0; i < COMPLICATION_IDS.length; i++) {
            complicationId = COMPLICATION_IDS[i];
            complicationDrawable = mComplicationDrawableSparseArray.get(complicationId);

            if (complicationId == BACKGROUND_COMPLICATION_ID) {
                // It helps for the background color to be black in case the image used for the
                // watch face's background takes some time to load.
                complicationDrawable.setBackgroundColorActive(Color.BLACK);
            } else {
                // Active mode colors.
                complicationDrawable.setBorderColorActive(primaryComplicationColor);
                complicationDrawable.setRangedValuePrimaryColorActive(primaryComplicationColor);

                // Ambient mode colors.
                Log.d("TAG Type", "Failed at complication " + i);
                complicationDrawable.setIconColorActive(Color.WHITE);
                complicationDrawable.setBorderColorAmbient(Color.WHITE);
                complicationDrawable.setRangedValuePrimaryColorAmbient(Color.WHITE);
            }
        }
    }


当我注释掉

complicationDrawable.setIconColorActive(Color.WHITE);


颜色仍为白色。如果我取消注释并将其值更改为Color.BLUE之类的图标,则该图标将显示为蓝色。

java - 防止Android Wear并发症着色-LMLPHP

我知道可以禁用复杂着色,因为我的Fossil表面之一以我希望的方式显示Google Assistant徽标。

java - 防止Android Wear并发症着色-LMLPHP

有谁知道我可以为我的并发症禁用颜色着色吗?

最佳答案

这里有两种不同的并发症类型:


图标-图标应为单色,并可能带有以下颜色
表盘。
SMALL_IMAGE-不应着色的全彩色图像。


第二个屏幕快照中的Google Assistant并发症(很可能)是SMALL_IMAGE类型。确保您的复杂插槽也支持SMALL_IMAGE类型。我的猜测是您当前仅支持ICON类型。在setIconColorActive()上调用ComplicationDrawable不会给SMALL_IMAGE着色,而只会给ICON着色。

支持这两种类型都很好,只是要记住,实际上声明它们的顺序很重要。

有关不同类型的更多详细信息,请参见official documentation

10-04 11:59
查看更多