2017-02-15 92 views
5

我试图做到这一点,但我只能实现填充对象(形状)。 我的要求是改变文字颜色以及形状填充。用两种不同的颜色填充文字

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

当黄颜色填充的“背景“的形状,它将改变颜色为”白色“,其先前为”黄色“。这种形状的大小也是动态的。

我试过并实现了什么?

我能够用百分比填充形状,但在到达文本边缘时未能更改颜色。

enter image description here

enter image description here

回答

6

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

让我们通过如何实现一步这种效果一步的概念:

  1. 有三种形状,我们需要绘制 - 外形圆润行程+橙色进度条+文本本身
  2. 我们借鉴笔画为
  3. 但是对于进度条,我们需要删除与其相交的文本,并且基本上使文本交点透明。 (DIFFERENCE)
  4. 同样对于进度条,我们只需要显示与外部圆形笔画路径相交的矩形部分。 (交叉)
  5. 同样,对于文本,在左侧我们基本上切掉了与进度条相交的部分。我们只显示橙色文字的右侧。 (再次差)

如果您正在使用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

+1

这太神奇了。谢谢 :) –