我用paint和canvas以及draw方法画了一条线。但现在这条线画得很成功。但当我要画第二条线时,它会擦除之前画的线。开始画一条新的线。
在我看来,存储绘制的线并使用户能够操作它们只是适度复杂。
创建Line类。包括开始和结束坐标、颜色等作为类的字段以及要删除、移动等的方法。还添加一个采用MotionEvent参数的方法。在该方法中,使用MotionEvent来确定是否已触摸该线,并根据需要调整其位置。
将对绘制的每条线的引用(作为line类的实例创建)存储在扩展View类的某个集合或列表中,ArrayList应该这样做。然后,在onTouch事件中,调用每条线的触摸检测方法,并将MotionEvent传递给这些方法。
最后,覆盖View的onDraw回调,通过迭代line实例的引用集合来绘制每条线。
你也可以添加更多的手势,比如长按删除等。下面是一个(完全未经测试,根据记忆编写)这种方法的框架。
class Line
public float x1, x2, y1, y2;
public void detectTouch(MotionEvent motionEvent){
// code to detect a touch and adjust the x and ys accordingly
}
class DrawView extends View{
private ArrayList<Line> lines = new ArrayList<Lines>();
....
....
@Override
public void onDraw(Canvas canvas) {
super.onDraw();
for (Line line : lines){
canvas.drawLine(line.x1,line.y1,line.x2,line.y2);
}
}
@Override
public boolean onTouch(View view, MotionEvent event) {
....
....
for (Line line : lines){
line.detectTouch(MotionEvent);
}
}
玩得开心!