为什么实战要从扩展View开始呢?干嘛不自己写一个呢?因为从学习的角度来说,Android系统已经把很多View都封装好了,所以我们只需要对其部分扩展即可,这样我们会更加专注,而不是沉迷细节不能自拔.,忽略了View的本质.先看看最终效果吧
我们先声明局部变量
private Paint mPaint1; //画笔
private Shader mShader=null; //shader渲染器
private Matrix matrix; //变换类
private float mtrans; //移动距离
然后在OnSizeChange和Ondraw中,写如下代码
@Override
protected void onDraw(Canvas canvas) {
//绘制文本之前
super.onDraw(canvas);
//绘制文本之后
mtrans+=getWidth()/5;
if(mtrans>getMeasuredWidth()){
mtrans=0;
}
//canvas.restore();
matrix.setTranslate(mtrans, 0);
mShader.setLocalMatrix(matrix);
postInvalidateDelayed(100);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
// TODO Auto-generated method stub
super.onSizeChanged(w, h, oldw, oldh);
mPaint1=getPaint();
mShader =new LinearGradient(5, 0, 10,0, new int[]{Color.GRAY,Color.WHITE,Color.GRAY}
, null, Shader.TileMode.CLAMP);
mPaint1.setShader(mShader);
matrix=new Matrix();
这样,我们一个扩展的TextView就写好了