2017-02-15 43 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

這太神奇了。謝謝 :) –