Я не могу провести прямую линию медленно! Когда я медленно двигаюсь, у меня есть волнистая линия вместо прямой линии.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;
}
Вы можете нарисовать прямую линию при быстром перемещении, потому что каждое событие касания распространяется, и вы рисуете линию между двумя точками. Когда вы двигаетесь быстро, эти точки распределяются, и прямая часть линии становится более заметной. Когда вы двигаетесь медленно, регистрируется то же количество сенсорных событий, но они все намного ближе друг к другу. Это означает, что у вас будет несколько сегментов прямой линии, которые образуют вашу линию очень близко друг к другу, чтобы линия выглядела зубчатой. Чтобы решить это? Переместите палец быстрее или выбросьте события касания, если вы не переместились достаточно далеко. – MCeley