我正在为android绘制程序。我想创建通用的“工具”,它们将MotionEvent作为参数发送,并使用它们来执行绘制或擦除页面上的元素等任务。我想编程它,以便一个工具超类可以更改为任何子类工具。我在SO上做了一些浏览,并在此处找到了类似的问题:Multiple subclasses, how to instance any of them?
我不确定它是否完全适用,用户检查的答案对我来说有点混乱。如果有人能详细说明这个问题的答案,或者对我的目标有更多了解,那么我将非常感激。
编辑:我想要完成的是采取类似下面的代码:
@Override
public boolean onTouchEvent(MotionEvent event) {
float touchX = event.getX();
float touchY = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
currentTool.Touch(event);
//drawPath.moveTo(touchX, touchY);
break;
case MotionEvent.ACTION_MOVE:
currentTool.Move(event); //drawPath.lineTo(touchX, touchY);
break;
case MotionEvent.ACTION_UP:
currentTool.Untouch(event);
//drawCanvas.drawPath(drawPath, drawPaint);
//drawPath.reset();
break;
default:
return false;
}
invalidate();
return true;
}
用户在使用程序时可以更改currentTool
。每当用户触摸屏幕时,发布的代码将运行,但是使用的工具可以根据用户选择的工具而改变(因此铅笔工具将绘制线条,橡皮擦工具将擦除线条等)。我想这样做是为了在我的程序中有更好的OO设计,并且以后可以更容易地添加或删除工具。