В настоящее время я работаю над приложением, которое позволяет свободно рисовать.
Текущий метод, который я использую, выглядит следующим образом:
currentLine - это список, в котором хранится история всех точек, которые возвращает ACTION_MOVE
.
public boolean onTouchEvent (MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
Point p = new Point(event.getX(),event.getY());
currentLine.addPoint(p);
invalidate();
break;
}
return true;
}
Затем я беру эти точки и рисую их в методе onDraw
моего класса.
@Override
protected void onDraw(Canvas c) {
super.onDraw(c);
//Draw Background Color
c.drawColor(Color.BLUE);
//Setup Paint
Paint p = new Paint();
p.setStyle(Style.FILL);
p.setColor(COLOR.WHITE);
//iterate through points
if(currentLine.size()>0){
for(int x = 0;x<currentLine.size();x++){
c.drawCircle(currentLine.get(x).getX(), currentLine.get(x).getY(), 3, p);
}
}
}
И этот метод прекрасно работает, без задержек или чего-либо еще.
Кроме того, он не получает достаточно баллов, необходимых ему.
Например, если я хочу быстро провести пальцем по всему экрану, он может нарисовать только 15 точек всего события.
Как я могу улучшить производительность / скорость MotionEvent? Как я могу получить больше баллов? Или есть что-то еще, что я должен делать?
---- EDIT ----
Мне удалось решить это самостоятельно.
Вместо использования drawCircle
я переключился на drawLine
.
* +1034 * Пример: * * одна тысяча тридцать пять
if(points.size()>0){
for(int x = 0;x<points.size()-1;x++){
c.drawLine(points.get(x).getX(), points.get(x).getY(), points.get(x+1).getX(), points.get(x+1).getY(), p);
}
}
Это дает сплошные линии, чего я и хотел.
Однако, ради знаний, я все же хотел бы знать, как ускорить MotionEvents.
Был бы признателен за подробный ответ