MainActivity
//本来应该
//setContentView(R.layout.activity_main);
//但是应该修改成以下的代码
setContentView(new PaintView(this));
PaintView类继承一个View类
PaintView extends View
//画笔
private Paint mPaint;
public PaintView(Context context) {
super(context);
init();
}
public PaintView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public PaintView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
/**
* 初始化操作
*/
private void init(){
//创建画笔
mPaint = new Paint();
//设置画笔颜色为黑色
mPaint.setColor(Color.BLACK);
//设置描边宽度,也就是画笔粗度
mPaint.setStrokeWidth(30);
//设置字号
mPaint.setTextSize(40);
//加粗
mPaint.setFakeBoldText(true);
//删除线
mPaint.setStrikeThruText(true);
//抖动效果
mPaint.setDither(true);
//消除锯齿痕迹
mPaint.setAntiAlias(true);
//
Typeface font = Typeface.create(Typeface.SANS_SERIF, Typeface.ITALIC);
mPaint.setTypeface(font);
}
@Override
protected void onDraw(Canvas canvas) {
//绘制一个圆
// canvas.drawCircle(200, 200, 100, mPaint);
//
// //设置画笔颜色为黑色
// mPaint.setColor(Color.RED);
// canvas.drawText("我爱你中国", 280, 280, mPaint);
int size = mPoints.size();
for (int i = 0; i < size; i++) {
PointF p = mPoints.get(i);
canvas.drawCircle(p.x, p.y, mLineWidth, mPaint);
}
}
private float mLineWidth = 30;
//保存路径
private ArrayList<PointF> mPoints = new ArrayList<PointF>();
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
//记录点击的位置
PointF p = new PointF(x, y);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
//按下状态
case MotionEvent.ACTION_MOVE:
//移动状态
case MotionEvent.ACTION_UP:
mPoints.add(p);
//刷新,调用这个方法会导致onDraw方法再次被执行
invalidate();
//抬起状态
break;
}
return true;
}