public class AppView extends View {
private Path path;
private Paint mPaintText, mPaint;
private Bitmap bitmap;
private Canvas mcanvas;
public AppView(Context context) {
super(context);
init(context);
}
public AppView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context);
}
public AppView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(Context context) {
path = new Path();//创建路径
//创建画笔
mPaintText = new Paint();
mPaintText.setTextSize(40);//设置文字大小
mPaintText.setColor(Color.RED);//设置文字颜色
mPaintText.setStrokeWidth(10); //设置画笔的粗细
mPaintText.setTextAlign(Paint.Align.CENTER);//设置字体居中
mPaintText.setAntiAlias(true);//设置抗锯齿
mPaint = new Paint();
mPaint.setStrokeWidth(30);
mPaint.setAlpha(0);
mPaint.setAntiAlias(true);
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
mPaint.setStyle(Paint.Style.STROKE);//设置空心
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvasText(canvas, "大吉大利今晚吃鸡");
canvas.drawBitmap(bitmap, 0, 0, null);
Log.d("Tag", "c");
}
private void canvasText(Canvas canvas, String content) {
canvas.drawText(content, getRight() / 2, getBottom() / 2, mPaintText);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
Log.d("Tag", "a");
//创建bitmap
bitmap = Bitmap.createBitmap(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.getSize(heightMeasureSpec), Bitmap.Config.ARGB_8888);
mcanvas = new Canvas(bitmap); //创建画布
mcanvas.drawColor(Color.GRAY); //设置画布的颜色
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
path.moveTo(event.getX(), event.getY());
break;
case MotionEvent.ACTION_MOVE:
path.lineTo(event.getX(), event.getY());
break;
}
mcanvas.drawPath(path, mPaint);
invalidate();
return true;
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
Log.d("Tag", "b");
}
}