GradientShaderTextView.java 2.21 KB
//package com.ectrip.cyt.zxing.view;
//
//import android.content.Context;
//import android.graphics.Canvas;
//import android.graphics.Color;
//import android.graphics.LinearGradient;
//import android.graphics.Matrix;
//import android.graphics.Paint;
//import android.graphics.Shader;
//import android.util.AttributeSet;
//public class GradientShaderTextView extends android.support.v7.widget.AppCompatTextView {
//
//  private LinearGradient mLinearGradient;
//  private Matrix         mGradientMatrix;
//  private Paint          mPaint;
//  private int mViewWidth = 0;
//  private int mTranslate = 0;
//
//  private boolean mAnimating = true;
//  private int delta = 15;
//  public GradientShaderTextView(Context ctx)
//  {
//    this(ctx,null);
//  }
//
//  public GradientShaderTextView(Context context, AttributeSet attrs) {
//    super(context, attrs);
//  }
//
//  @Override
//  protected void onSizeChanged(int w, int h, int oldw, int oldh) {
//    super.onSizeChanged(w, h, oldw, oldh);
//    if (mViewWidth == 0) {
//      mViewWidth = getMeasuredWidth();
//      if (mViewWidth > 0) {
//        mPaint = getPaint();
//        String text = getText().toString();
//       // float textWidth = mPaint.measureText(text);
//        int size;
//        if(text.length()>0)
//        {
//          size = mViewWidth*2/text.length();
//        }else{
//          size = mViewWidth;
//        }
//        mLinearGradient = new LinearGradient(-size, 0, 0, 0,
//            new int[] { Color.RED, Color.GREEN, Color.BLUE},
//            new float[] { 0, 0.5f, 1 }, Shader.TileMode.CLAMP); //边缘融合
//        mPaint.setShader(mLinearGradient);
//        mGradientMatrix = new Matrix();
//      }
//    }
//  }
//
//  @Override
//  protected void onDraw(Canvas canvas) {
//    super.onDraw(canvas);
//
//    int length = Math.max(length(), 1);
//    if (mAnimating && mGradientMatrix != null) {
//      float mTextWidth = getPaint().measureText(getText().toString());
//      mTranslate += delta;
//      if (mTranslate > mTextWidth+1 || mTranslate<1) {
//        delta  = -delta;
//      }
//      mGradientMatrix.setTranslate(mTranslate, 0);
//      mLinearGradient.setLocalMatrix(mGradientMatrix);
//      postInvalidateDelayed(30);
//    }
//  }
//
//}