java - 绘制圆圈而不删除先前的圆圈

标签 java android

目前,我每次单击屏幕时都会绘制圆圈,但是当我绘制一个圆圈时,我之前绘制的圆圈就会被删除。有没有办法继续点击并使上一个圆圈保留在屏幕上?

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/

相关文章:

java - 在实例化时将 ArrayList<Boolean> 的所有值设置为 false

java - 无法在 Hibernate Java 中保存对象

java - 如果需要从主类调用 Stage,如何在类文件上拆分 JavaFX 节点?

java - 在 Java 中将光学等效的 unicode 字符串转换为 ASCII?

java - Android SIP call.startAudio() 不工作

android - 压缩自定义相机拍摄的图像大小

java - Java 中通用列表的过滤和排序项目

android - 从椭圆曲线点的 x 和 y 值生成 PublicKey

c# - Unity协程在后台停止

android - 需要知道什么时候是新的一天,即时间是 00 :00:00