2013-03-12 4 views
0

Я не могу провести прямую линию медленно! Когда я медленно двигаюсь, у меня есть волнистая линия вместо прямой линии.Android - Java: как рисовать прямую линию медленно

Я попытался использовать инструмент «Расположение указателя», чтобы проверить точки, и я получил тот же результат. Но когда я скольжу быстрее, вертикальной или горизонтальной, я RECIVED прямую линию ...

Это мой код

public boolean onTouchEvent(MotionEvent event) { 
    // TODO Auto-generated method stub 
    String ms; 
    switch (event.getAction()){ 
    case MotionEvent.ACTION_DOWN: 
     int xDown = (int)event.getX(); 
     int yDown = (int)event.getY(); 

     ms = "down"; 
     out.println(xDown); 
     out.println(yDown); 
     out.println(ms); 

     break; 
    case MotionEvent.ACTION_MOVE: 
     ms = "move"; 

     int hsize = event.getHistorySize(); 
     for(int i=0;i<hsize;i++) 
     { 
      int x = (int)event.getHistoricalX(i); 
      int y = (int)event.getHistoricalY(i); 
      int hx = x; 
      int hy = y; 
      out.println(hx); 
      out.println(hy); 
      out.println(ms); 
     } 

     /* 
     int xMove = (int)event.getX(); 
     int yMove = (int)event.getY(); 
     out.println(xMove); 
     out.println(yMove); 
     ms = "move"; 
     out.println(ms); 
     */ 
     break; 
    case MotionEvent.ACTION_UP: 
     int xUp = (int)event.getX(); 
     int yUp = (int)event.getY(); 
     out.println(xUp); 
     out.println(yUp); 
     ms = "up"; 
     out.println(ms); 
     break; 
    } 
    return false; 
} 
+0

Вы можете нарисовать прямую линию при быстром перемещении, потому что каждое событие касания распространяется, и вы рисуете линию между двумя точками. Когда вы двигаетесь быстро, эти точки распределяются, и прямая часть линии становится более заметной. Когда вы двигаетесь медленно, регистрируется то же количество сенсорных событий, но они все намного ближе друг к другу. Это означает, что у вас будет несколько сегментов прямой линии, которые образуют вашу линию очень близко друг к другу, чтобы линия выглядела зубчатой. Чтобы решить это? Переместите палец быстрее или выбросьте события касания, если вы не переместились достаточно далеко. – MCeley

ответ

0

Я могу предложить вам сохранить начиная местоположение и перекроить линию каждый раз, когда от старта укажите точку, в которой вы касаетесь экрана.

Если вы не хотите использовать многоугольник из прямых линий, вы можете нарисовать его, нажав на экран, где вы хотите разместить следующую точку.

Смежные вопросы