public class PlayText extends android.support.v7.widget.AppCompatTextView {
private Paint mPaint;
private int mWidth;
private LinearGradient mLinearGradient;
private Matrix mMatrix;
private int mTranslate;
public PlayText(Context context) {
this(context,null);
}
public PlayText(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
mWidth = getMeasuredWidth();
if (mWidth == 0 ){
mWidth = getMeasuredWidth();
}
if (mWidth > 0 ){
mPaint = getPaint();
//參數(shù)一為漸變起初點(diǎn)坐標(biāo)x位置幢尚,參數(shù)二為y軸位置翅楼,參數(shù)三和四分辨對應(yīng)漸變終點(diǎn),參數(shù)五是參與漸變效果的顏色集合,參數(shù)六是是定義每個(gè)顏色處于的漸變相對位置,最后參數(shù)為平鋪方式理茎,這里設(shè)置為鏡像
mLinearGradient = new LinearGradient(0,0,mWidth,0,new int[]{
Color.BLUE,0xffffffff,Color.RED,Color.GREEN
},null, Shader.TileMode.CLAMP);
mPaint.setShader(mLinearGradient);
mMatrix = new Matrix();
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (mMatrix != null) {
mTranslate += mWidth/5;
if (mTranslate > 2*mWidth){
mTranslate = -mWidth;
}
mMatrix.setTranslate(mTranslate,0);
mLinearGradient.setLocalMatrix(mMatrix);
postInvalidateDelayed(100);
}
}
}