实现原理:
private void init() {
Paint mPaint = getPaint();
mPaint.setAntiAlias(true);
mPaint.setDither(true);
mPaint.setTextSize(40);
gradient = new LinearGradient(0, 0, getMeasuredWidth(), 0, Color.GRAY, Color.RED, Shader.TileMode.REPEAT);
mPaint.setShader(gradient);
matrix = new Matrix();
}
并且ondraw中重新绘制文字
if (matrix != null) {
mTranslate += getMeasuredWidth() / 10;
if (mTranslate > getMeasuredWidth() * 2) {
mTranslate = -getMeasuredWidth();
}
matrix.setTranslate(mTranslate, 0);
gradient.setLocalMatrix(matrix);
postInvalidateDelayed(300);
}
下面是源码链接:https://github.com/xiangzhihong/ShadeView/tree/master