选择在Android Canvas上绘制的任意形状

时间:2018-11-16 01:53:07

标签: java android canvas

我有一个应用程序,可以在画布上绘制多个形状,并在自己的自定义CompositeShape中跟踪它们,该自定义ArrayList的内部形状已添加到屏幕上。我希望能够触摸特定形状的屏幕并将其删除。因为我在班上一直在跟踪它们,所以我可以在获得正确信息的情况下将其删除。如何获得所选形状的信息?

我的想法是循环浏览形状列表,直到触摸到的形状中的信息与列表中的一个匹配,然后才可以从列表中删除。我的Canvas当前的设置如下:

@Override
public boolean onTouchEvent(MotionEvent event) {
    CommandFactory factory = CommandFactory.getInstance();
    List<Object> optionList = makeList();
    int[] xyList = new int[2];

    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            xyList[0] = (int) event.getX();
            xyList[1] = (int) event.getY();
            optionList.add(xyList);
            factory.doAction("AddShape", optionList);
            invalidate();
        case MotionEvent.ACTION_MOVE:
        case MotionEvent.ACTION_UP:
        case MotionEvent.ACTION_CANCEL:
            break;
    }

    invalidate();
    return true;
}

protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    graphics.setCanvas(canvas);
    try {
        shapes.render(graphics, 0, 0);
    } catch (ShapeException e) {
        e.printStackTrace();
    }
    invalidate();
}

让我知道是否应该提供有关当前代码的更多信息。我假设魔术会发生在上面的代码中的某个地方。

谢谢。

0 个答案:

没有答案