来自:https://blog.csdn.net/inwhites/article/details/81917086
public static SpannableStringBuilder getRadiusGradientSpan(String string, int startColor, int endColor) {
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(string);
LinearGradientFontSpan span = new LinearGradientFontSpan(startColor, endColor);
spannableStringBuilder.setSpan(span, 0, spannableStringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return spannableStringBuilder;
}
public class LinearGradientFontSpan extends CharacterStyle
implements UpdateAppearance {
private int startColor;
private int endColor;
public LinearGradientFontSpan(int startColor, int endColor) {
this.startColor = startColor;
this.endColor = endColor;
}
@Override
public void updateDrawState(TextPaint tp) {
LinearGradient lg = new LinearGradient(0, 0, 0, tp.descent() - tp.ascent(),
startColor,
endColor,
Shader.TileMode.REPEAT);
tp.setShader(lg); //这里注意这里画出来的渐变色会受TextView的字体色的透明度影响
}
}