Android 当用户在屏幕上移动手指时,在画布上绘制多个矩形

Android 当用户在屏幕上移动手指时,在画布上绘制多个矩形,android,Android,当用户触摸屏幕时,我使用下面的代码在画布上绘制矩形,其中的第一个坐标是用户第一次触摸屏幕的位置,它起作用了 问题:我只能画一个矩形,当我想画第二个矩形时,第一个就消失了(我想画多少就画多少) 第二个问题:如何用同样的方法画三角形和圆 守则: //In a custom view class int mStartX; int mStartY; int mEndX; int mEndY; Paint paint = new Paint(); //I did constructor and eve

当用户触摸屏幕时,我使用下面的代码在画布上绘制矩形,其中的第一个坐标是用户第一次触摸屏幕的位置,它起作用了

问题:我只能画一个矩形,当我想画第二个矩形时,第一个就消失了(我想画多少就画多少)

第二个问题:如何用同样的方法画三角形和圆

守则:

//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;
}
当我想画第二张时,第一张就消失了

只是因为您调用了invalidate()命令

您可以创建一些draw(sprite)对象并将绘制坐标存储到自身中,然后在onDraw(Canvas Canvas)在invalidate()之后调用时绘制此对象集合

第二个问题:如何用同样的方法画三角形和圆

阅读以查找所需的命令

当我想画第二张时,第一张就消失了

只是因为您调用了invalidate()命令

您可以创建一些draw(sprite)对象并将绘制坐标存储到自身中,然后在onDraw(Canvas Canvas)在invalidate()之后调用时绘制此对象集合

第二个问题:如何用同样的方法画三角形和圆

阅读以查找所需的命令