作者:采蘑菇的小熙熙_395 | 来源:互联网 | 2023-06-05 19:46
直接继承自Android中原有控件
渐变的TextView
效果:
代码:
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.support.v7.widget.AppCompatTextView;
import android.util.AttributeSet;
import android.util.Log;public class CustomTextView extends AppCompatTextView {private final static String TAG = CustomTextView.class.getSimpleName();private Paint paint1;private Paint paint2;private int mWidth;private LinearGradient gradient;private Matrix matrix;private int deltaX;public CustomTextView(Context context) {super(context, null);}public CustomTextView(Context context, AttributeSet attrs) {super(context, attrs);initView(context, attrs);}private void initView(Context context, AttributeSet attrs) {paint1 = new Paint();paint1.setColor(getResources().getColor(android.R.color.holo_blue_dark));paint1.setStyle(Paint.Style.FILL);}@Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) {super.onSizeChanged(w, h, oldw, oldh);if(mWidth == 0){Log.e(TAG,"*********************");mWidth = getMeasuredWidth();paint2 = getPaint();gradient = new LinearGradient(0, 0, mWidth, 0, new int[]{Color.GRAY,Color.WHITE,Color.GRAY}, new float[]{0.3f,0.5f,1.0f}, Shader.TileMode.CLAMP);paint2.setShader(gradient);matrix = new Matrix();}}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);if(matrix !=null){deltaX += mWidth / 5;if(deltaX > 2 * mWidth){deltaX = -mWidth;}}matrix.setTranslate(deltaX, 0);gradient.setLocalMatrix(matrix);postInvalidateDelayed(100);}
}