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<代码>无效()
是这里的关键。