防止Android Wear兼容性着色

时间:2018-01-22 13:25:21

标签: java android wear-os android-wear-complication

我开始使用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,则图标将显示为蓝色。

Watchface with Google Assistant color tinting

我知道可以禁用并发症着色,因为我的一个Fossil表盘以我希望的方式显示了Google智能助理徽标。

enter image description here

有谁知道如何禁用我的并发症的颜色着色?

1 个答案:

答案 0 :(得分:0)

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

  1. 图标 - 图标应为单色,可以着色 表盘。

  2. SMALL_IMAGE - 不应着色的全彩色图像。

  3. 第二个屏幕截图中的Google Assistant复杂功能(很可能)是SMALL_IMAGE类型。确保您的并发症插槽也支持SMALL_IMAGE类型。我的猜测是你目前只支持ICON类型。在setIconColorActive()上拨打ComplicationDrawable不会为SMALL_IMAGE着色,只会使用ICON。

    支持这两种类型完全没问题,只要记住你声明它们的顺序实际上很重要。

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