写的带有带有背景和边框
package com.example.administrator.youku_animi.MyView;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.widget.TextView;
/**
* Created by Administrator on 2017/7/22 0022.
*/
public class MyTextView extends TextView
{
Paint mPaint1 = null;
Paint mPaint2 = null;
LinearGradient mLinearGradient = null;
public MyTextView(Context context)
{
super(context);
}
@Override
protected void onDraw(Canvas canvas)
{
mPaint1 = new Paint();
mPaint1.setColor(getResources().getColor(android.R.color.holo_blue_light));
mPaint1.setStyle(Paint.Style.FILL);
mPaint2 = new Paint();
mPaint2.setColor(Color.YELLOW);
mPaint2.setStyle(Paint.Style.FILL);
//Preconcat the current matrix with the specified translation
canvas.drawRect(
0,
0,
getMeasuredWidth(),
getMeasuredHeight(),
mPaint1
);
canvas.drawRect(
10,
10,
getMeasuredWidth() - 10,
getMeasuredHeight() - 10,
mPaint2
);
//Saves the current matrix and clip onto a private stack.
canvas.save();
//Preconcat the current matrix with the specified translation
canvas.translate(10, 0);
super.onDraw(canvas);
//This call balances a previous call to save(), and is used to remove all modifications to the matrix/clip state since the last save call.
canvas.restore();
}
}
闪动字体的TextView
package com.example.administrator.youku_animi.MyView;
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.widget.TextView;
/**
* Created by Administrator on 2017/7/22 0022.
*/
public class MyTextView2 extends TextView
{
int mTranslate ;
int mViewWidth;
LinearGradient mLinearGradient = null;
Paint mPaint;
Matrix matrix = null, matrix1;
public MyTextView2(Context context)
{
super(context);
}
@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();
mLinearGradient = new LinearGradient(
0,
0,
mViewWidth,
0,
new int[]{
Color.RED,
0xffffffff,
Color.BLUE
},
null,
Shader.TileMode.REPEAT
);
mPaint.setShader(mLinearGradient);
matrix = new Matrix();
}
}
}
@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
if (matrix != null)
{
mTranslate += mViewWidth / 10;
}
matrix.setTranslate(mTranslate, 0);
mLinearGradient.setLocalMatrix(matrix);
postInvalidateDelayed(100);
}
}