如何在布局中绘制多条线以保存先前绘制的线条?

时间:2014-03-04 06:45:51

标签: android graphics

我使用了paint和canvas以及draw方法绘制了一条线。 但现在线已成功绘制。 但是,当我要绘制第二行时,它将删除先前绘制的线条。 并开始画一条新线。

1 个答案:

答案 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);
        }


    }

玩得开心!