Java 在画布Android中触摸事件后在任意位置绘制矩形

Java 在画布Android中触摸事件后在任意位置绘制矩形,java,android,canvas,Java,Android,Canvas,我试图在画布中的随机位置绘制一个矩形(不应超过画布尺寸),如果用户触摸该形状,它应在另一个随机位置绘制。我已经成功地画出了矩形,但需要触摸事件的帮助,并在之后的任意位置绘制它 public class DrawView extends View { Paint paint = new Paint(); public DrawView(Context context) { super(context); } @Overri

我试图在
画布中的随机位置绘制一个矩形(不应超过画布尺寸),如果用户触摸该形状,它应在另一个随机位置绘制。我已经成功地画出了矩形,但需要
触摸事件的帮助
,并在之后的任意位置绘制它

public class DrawView extends View {
    Paint paint = new Paint();

    public DrawView(Context context) {
        super(context);            
    }

    @Override
    public void onDraw(Canvas canvas) {
        paint.setColor(Color.BLACK);
        paint.setStrokeWidth(3);
        canvas.drawRect(30, 30, 80, 80, paint);
        paint.setStrokeWidth(0);
        paint.setColor(Color.CYAN);
        canvas.drawRect(33, 60, 77, 77, paint );
        paint.setColor(Color.YELLOW);
        canvas.drawRect(33, 33, 77, 60, paint );

    }

}

如有任何帮助,我们将不胜感激。

您可以按以下方式操作:

例如

  public class DrawView extends View {

     // here you define hashmap for user touch points

      Paint paint = new Paint();

  public DrawView(Context context) {
      super(context);            
  }

  @Override
  public void onDraw(Canvas canvas) {
      yourRandomFunction(-99,-99);


  }

  public void yourRandomFunction(float x , float y ){
     //for first time user touch 
     // if -99 && -99 { 
    //Calculate random points here.

    paint.setColor(Color.BLACK);
    paint.setStrokeWidth(3);
    canvas.drawRect(30, 30, 80, 80, paint);
    paint.setStrokeWidth(0);
    paint.setColor(Color.CYAN);
    canvas.drawRect(33, 60, 77, 77, paint );
    paint.setColor(Color.YELLOW);
    canvas.drawRect(33, 33, 77, 60, paint );
    // add points to hashmap
}
//else check in hashmap if exist then {
  //Calculate random points here.
    paint.setColor(Color.BLACK);
    paint.setStrokeWidth(3);
    canvas.drawRect(30, 30, 80, 80, paint);
    paint.setStrokeWidth(0);
    paint.setColor(Color.CYAN);
    canvas.drawRect(33, 60, 77, 77, paint );
    paint.setColor(Color.YELLOW);
    canvas.drawRect(33, 33, 77, 60, paint );
    // add point to hashmap
 } 

}

@Override
public boolean onTouchEvent(MotionEvent event) {
      float eventX = event.getX();
       float eventY = event.getY();

    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
      //check points in hashmap 

      return true;
    case MotionEvent.ACTION_MOVE:

      break;
    case MotionEvent.ACTION_UP:
      // nothing to do
      yourRandomFuncntion(eventX,eventY);
      break;
    default:
      return false;
    }

    // Schedules a repaint.
    invalidate();
    return true;
      }
    } 

如果你得到了答案,请勾选我的答案。它什么时候重新绘制矩形?你能用我的代码让它工作吗?因为这样我更了解它,是的,我会勾选你的答案。你只需要在你的类中创建一个方法draw random,当MotionEvent.ACTION\u UP://nothing to do break<代码>无效()
是这里的关键。