目前,我每次单击屏幕时都会绘制圆圈,但是当我绘制一个圆圈时,我之前绘制的圆圈就会被删除。有没有办法继续点击并使上一个圆圈保留在屏幕上?
public boolean onTouchEvent(MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
drawCirc = true;
xTouch = event.getX();
Log.d("keyboard", "xpos" + xTouch);
yTouch = event.getY();
break;
case MotionEvent.ACTION_UP:
drawCirc = false;
}
return true;
}
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.RED);
if(drawCirc) {
if (xTouch < 150 && xTouch>0) {
paint.setColor(Color.RED);
canvas.drawCircle(150, 500, 100, paint);
invalidate();
}
}
}
最佳答案
问题是您没有保存旧
点。您需要创建一个配对列表或 map 并保存所有点。
final List<Pair<Integer, Integer> points = new ArrayList();
public boolean onTouchEvent(MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
drawCirc = true;
xTouch = event.getX();
Log.d("keyboard", "xpos" + xTouch);
yTouch = event.getY();
points.add(new Pair(xTouch, yTouch));
break;
case MotionEvent.ACTION_UP:
drawCirc = false;
}
return true;
}
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.RED);
if(drawCirc) {
for (Pair<Int, Int> point : points) {
xTouch = point.first;
yTouch = point.second;
if (xTouch < 150 && xTouch>0) {
paint.setColor(Color.RED);
canvas.drawCircle(150, 500, 100, paint);
}
}
}
}
上面的代码应该让您大致了解要做什么。
关于java - 绘制圆圈而不删除先前的圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57138650/