2012-11-25 4 views
0

그래서 나는 터치시 사용자 손가락을 따르는 "페인팅"경로를 실험하고 있습니다. 먼저 작동 한 this tutorial을 언급했지만 아직 터치 포인트를 연결하지 않는다는 명백한 문제가있었습니다. 그래서 나는 동일한 튜토리얼과 문제를 직접 언급 한 this question을 발견했습니다. 큐빅 스플라인을 다루는 부분에서 johncarl의 솔루션을이 링크에 사용하여 매우 유용하다고 생각했습니다. 그러나 화면에서 손가락을 떼고 (ACTION_UP) 다시 내려 놓으면 (ACTION_DOWN) 마지막 지점을이 새 지점에 연결하고 경로를 조금 변경합니다.사용자 터치 다음에 여러 경로 그리기

지금, 내 질문은 사용자가 손가락을 제거하고 다시 화면에 놓으면 어떻게 새로운 경로를 시작할 수 있습니까? 내 말은 새로운 지점이 마지막 지점에 연결되지 않는다는 것입니다.

나는 나의 새로운 시도가이되고, 몇 가지를 시도했다 :

else if (event.getAction() == MotionEvent.ACTION_UP){ 
     for (int i = 0; i <= points.size() - 1; i++){ 
      points.remove(i); 
     } 
    } 

위의 코드는이 onTouch() 메소드에서 if 문에 추가했다. 그러나 이것은 전혀 효과가없는 것처럼 보입니다. 도움을 주시면 감사하겠습니다. 감사합니다!

답변

0

얼마간의 시행 착오 끝에 "새로운"경로를 시작하는 방법을 알아 냈습니다. 사실, 나는 같은 경로를 사용할 수 있습니다. 질문에 배치 한 코드는 arraylist (내가 새로운 경로를 시작하는 첫 번째 단계라고 생각했던)의 모든 값을 제거했을뿐입니다. 어떤 이유로, 그렇게하지도 않았습니다. 내가 발견 한 것은 그러나, 너무처럼 맑은() 메소드를 사용하고, 작업을 수행합니다

points.clear(); 

비록, 내가 발견,이 내 문제가 해결되지 않습니다. 이전에 그린 경로 만 제거합니다. 내가 할 필요가있는 것은 moveTo() 메서드를 사용하는 것입니다.이 메서드는 여러 경로가있는 것처럼 보이는 모양을 만드는 경로에서 중단을 허용합니다. 내가 전화 할 곳

startValues.add(points.size()); 

이 나에게 인덱스 값을 줄 것입니다 : 그래서, 나는 화면 (ACTION_UP)에서 내 손가락을 제거 할 때마다, 나는 다른 ArrayList에있는 값으로 '포인트'의 ArrayList의 크기를 추가 moveTo() 메서드. 전과 경로에

boolean first = true; 
    for(int i = 0; i < points.size(); i++){ 
     Point point = points.get(i); 

     for (int index = 0; index <= startValues.size() - 1; index++){ 
      if (i == startValues.get(index)){ 
       lineChange = true; 
       endNumber = (startValues.get(index) - 1); 
       break; 
      } 
     } 

     if(first || lineChange){ 
      first = false; 
      lineChange = false; 
      path.moveTo(point.x, point.y); 
     }else{ 
      Point prev = points.get(i - 1); 
      path.cubicTo(prev.x + prev.dx, prev.y + prev.dy, point.x - point.dx, point.y - point.dy, point.x, point.y); 
     } 

    } 

    canvas.drawPath(path, paint); 

이 방법이있을 것입니다 휴식 : 이제 된 onDraw() 메소드에서 나는 다음과 같은 코드를 추가합니다 (해당 링크에 모습을 내가 사용하던 모든 코드를 참조하도록 요청) 첫 번째 지점과 모든 지점에서 내가 화면에서 손가락을 들어 올렸을 때 다시 내려 놓을 때까지. 이것은 내가이 질문을했을 때 처음으로 겪었던 문제를 해결했지만 다른 문제를 일으켰습니다. 손가락을 화면에 대치 할 때 선의 시작점과 끝점이 바뀝니다. 솔루션 자체를 찾을 수 없다면 다른 질문으로 질문 할 것입니다. 나는 이것이 비슷한 문제에 직면 한 누구에게나 유용 할 수 있기를 바란다!