2013-09-23 61 views
1

毫无疑问,我正在做一些愚蠢的事情,但我似乎无法发现它。我试图根据用户的触摸来绘制路径。捕捉那些个体接触的代码是:Android:试图绘制多条路径,但得到一条长路径代替

public boolean onTouch(View view, MotionEvent event) { 
    float x = event.getX(); 
    float y = event.getY(); 

    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      // The user is starting a new path 
      Path path = new Path(); 
      paths.push(path); 
      path.moveTo(x,y); 
      path.lineTo(x,y); 
      break; 
     case MotionEvent.ACTION_MOVE: 
      // The user is drawing on the current path 
      path = paths.getLast(); 
      path.quadTo(x,y, (lastX + x)/2f, (lastY + y)/2f); 
      break; 
    } 

    lastX = x; 
    lastY = y; 

    invalidate(); 
    return true; 
} 

然后绘制线:

protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    ListIterator<Path> iterator = paths.listIterator(); 
    while (iterator.hasNext()) { 
     Path path = iterator.next(); 
     canvas.drawPath(path, paint); 
    } 
} 

的问题是,当我开始绘制的第二(或第n个)的路径,该代码是在最后一个端点和当前开始端点之间添加一条线。有什么建议么?

谢谢

回答

0

我已经创建了一个DrawCanvas应用程序。你可以下载它here并检查它是如何工作的。