Android 实现字体颜色渐变效果
废话留在后面直接上代码
public class LinearGradientFontSpan extends ReplacementSpan {
private int mSize;
private int startColor;
private int endColor;
public LinearGradientFontSpan(int startColor, int endColor) {
this.startColor = startColor;
this.endColor = endColor;
}
@Override
public int getSize(Paint paint, CharSequence text, int start, int end, Paint.FontMetricsInt fm) {
mSize = (int) (paint.measureText(text, start, end));
//这段不可以去掉,字体高度没设置,可能出现draw()方法没有被调用,如果你调用SpannableStringBuilder后append一个字符串,效果也是会出来,下面这段就不需要了
// 原因详见https://stackoverflow.com/questions/20069537/replacementspans-draw-method-isnt-called
Paint.FontMetricsInt metrics = paint.getFontMetricsInt();
if (fm != null) {
fm.top = metrics.top;
fm.ascent = metrics.ascent;