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

时间:2017-01-12 10:39:22

标签: android

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

问题:我只能绘制一个矩形,当我想绘制第二个矩形时,第一个消失(我想绘制尽可能多的矩形)。

第二个问题:如何使用相同的方法绘制三角形和圆形?

代码:

//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;
}

1 个答案:

答案 0 :(得分:0)

  

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

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

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

  

第二个问题:如何使用相同的方法绘制三角形和圆形?

阅读this以查找所需命令