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

Chi*_*hod 6 android background shape textcolor

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

形状可以填充百分比,例如直到
10%到50%=绿色
51%到80%=黄色
81%到100%=红色

当黄色填充" : "形状的背景时,它会将颜色更改为" 白色 ",此前为" 黄色 ".这种形状的大小也是动态的.

我尝试和实现了什么?

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

在此输入图像描述

在此输入图像描述

rak*_*gde 6

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

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

  1. 我们需要绘制三种形状 - Outline Rounded Stroke + Orange Progress Bar +文本本身
  2. 我们画出中风
  3. 但对于进度条,我们需要删除与其相交的文本,并基本上使文本交集透明.(区别)
  4. 同样对于进度条,我们必须仅显示与外部圆形笔划路径相交的矩形部分.(路口)
  5. 同样,对于文本,在左侧我们基本上切断了与进度条相交的部分.我们只显示文本的右侧是橙色.(再次差异)

如果您使用的是API 19+,那么这就是关键代码段的样子:

croppedProgressPath.op(progressPath, textPath, Path.Op.DIFFERENCE);
croppedProgressPath.op(progressStrokePath, Path.Op.INTERSECT);
————————————
croppedTextPath.op(textPath, progressPath, Path.Op.DIFFERENCE);
Run Code Online (Sandbox Code Playgroud)

线路在这里这里.

我为Github上的这个名为Diffre的项目编写了一个概念证明.如果你想先测试它,所有的代码都在这个回购中.

Diffre demo gif