使用两种不同颜色的文字填充形状

时间:2017-02-15 10:18:45

标签: android background shape textcolor

我试图实现这一点,但我只能实现填充对象(形状)。 我的要求是改变文字颜色和形状填充。

形状可以填充百分比,直到
10%至5​​0%=绿色
51%至80%=黄色
81%至100%=红色

当黄色填充" "的背景​​时在形状上,它会将颜色改变为" 白色"以前是" 黄色"。这种形状的大小也是动态的。

我尝试过并实现了什么?

我可以用百分比填充形状,但在到达文本边缘时无法更改颜色。

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:6)

我写了一个自定义视图。您可以使用Path API获得此双色效果。但是对于Android 1+兼容性,你应该使用Region API和上面的Kitkat(19+),你只能使用Path API。

让我们逐步了解如何实现这一效果的概念:

  1. 我们需要绘制三种形状 - 轮廓圆形笔划+橙色进度条+文本本身
  2. 我们绘制笔画
  3. 但对于进度条,我们需要删除与其相交的文本,并基本上使文本交集透明。 (差)
  4. 同样对于进度条,我们只需要显示与外部圆形笔划路径相交的矩形部分。 (交集)
  5. 同样地,对于文本,在左侧我们基本上切断了与进度条相交的部分。我们只显示文本的右侧是橙色。 (再次差异)
  6. 如果您使用的是API 19+,那么这就是关键代码段的样子:

    croppedProgressPath.op(progressPath, textPath, Path.Op.DIFFERENCE);
    croppedProgressPath.op(progressStrokePath, Path.Op.INTERSECT);
    ————————————
    croppedTextPath.op(textPath, progressPath, Path.Op.DIFFERENCE);
    

    herehere

    我为Github上的这个项目写了一个名为Diffre的概念证明。如果您想先测试一下,所有代码都在this repo

    Diffre demo gif