我有一个应用程序,可以在画布上绘制多个形状,并在自己的自定义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();
}
让我知道是否应该提供有关当前代码的更多信息。我假设魔术会发生在上面的代码中的某个地方。
谢谢。