我使用下面的代码在用户触摸屏幕时在画布上绘制矩形,其中第一个坐标是用户首次触摸屏幕的位置,它起作用。
问题:我只能绘制一个矩形,当我想绘制第二个矩形时,第一个消失(我想绘制尽可能多的矩形)。
第二个问题:如何使用相同的方法绘制三角形和圆形?
代码:
//In a custom view class
int mStartX;
int mStartY;
int mEndX;
int mEndY;
Paint paint = new Paint();
//I did constructor and everything.........
//Drawing the rectangle in on draw
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawRect(mStartX, mStartY, mEndX, mEndY, paint);
}
//updating the coordinate variables on touch
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
mStartX = (int) event.getX();
mStartY = (int) event.getY();
break;
case MotionEvent.ACTION_MOVE:
mEndX = (int) event.getX();
mEndY = (int) event.getY();
invalidate();
break;
case MotionEvent.ACTION_UP:
mEndX = (int) event.getX();
mEndY = (int) event.getY();
invalidate();
break;
default:
return false;
break;
}
return true;
}
答案 0 :(得分:0)
当我想画第二张时,第一张消失
只是因为你调用了invalidate()命令。
您可以创建一些绘制(精灵)对象并将绘制的坐标存储到自身中,然后在onDraw(Canvas canvas)在invalidate()之后调用时绘制此对象集合。
第二个问题:如何使用相同的方法绘制三角形和圆形?
阅读this以查找所需命令