
package cc.wzt.xi.Edit;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.EditText;
public class EditTextView extends EditText
{
public EditTextView(Context context, AttributeSet attrs)
{
super(context,attrs);
}
public static Paint paint; //所需的画笔
private int x,y,width,height; //储存供drawLineBlackground()使用的数据,减少依赖
public Canvas canvas; //从onDraw()提取的画布
public boolean AfterOnceDraw = false;//Lodint()所需的判断值
static /*初始画笔(所有对象共用)*/
{
paint=new Paint();
paint.setColor(Color.CYAN);
paint.setAlpha(160);
paint.setAntiAlias(true);
}
//在当前光标所在行铺背景颜色
private void drawLineBlackground(Paint pt)
{
this.canvas.save();
this.flushCursorRect();
this.canvas.drawRect(x,y,x+width,y+height,pt);
this.canvas.restore();
}
//drawLineBlackground()执行所需的坐标和检查
protected boolean flushCursorRect()
{
int x=0;
int y=((getLayout().getLineForOffset(getSelectionStart()))*getLineHeight());
if (x==0&&y>=0)
{
this.height=getLineHeight();
this.width=canvas.getWidth();
this.x=x;
this.y=y;
return true;
}
else return false;
}
//为drawLineBlackground()和flushCursorRect()建设环境
protected void Loadint(Canvas canvas)
{
if(this.canvas!=null)return;
this.canvas=canvas;
this.x=0;
this.y=0;
this.width=0;
this.height=0;
this.AfterOnceDraw=true;
}
@Override /*初始化并分担draw()的工作量*/
protected void onDraw(Canvas canvas)
{
Loadint(canvas);
drawLineBlackground(paint);
super.onDraw(canvas);
}
@Override /*执行新增的绘制*/
public void draw(Canvas canvas)
{
super.draw(canvas);
if(AfterOnceDraw)
{
drawLineBlackground(paint);
}
}
}

