我使用了paint和canvas以及draw方法绘制了一条线。 但现在线已成功绘制。 但是,当我要绘制第二行时,它将删除先前绘制的线条。 并开始画一条新线。
答案 0 :(得分:1)
在我看来,要存储绘制的线条并让用户操纵它们,只是中等复杂。
创建一个Line类。包括开始和结束坐标,颜色等作为类的字段和删除,移动等方法。还添加一个采用MotionEvent参数的方法。在此方法中,您使用MotionEvent确定是否已触摸此线并根据需要调整其位置。
存储对扩展View类中某种集合或列表中绘制的每一行(作为Line类的实例创建)的引用,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);
}
}
玩得开心!