Для приложения, которое я разрабатываю, хочу графически отображать результаты с шагомера. Шагомер использует service
для измерения количества шагов, выполняемых кем-то в фоновом режиме. У меня есть пользовательский вид под названием DrawView, в котором я хочу нарисовать результаты. Я вызываю метод drawPoint из моего service
всякий раз, когда измеряется шаг. Затем из моего метода drawPoint я пытаюсь позвонить onDraw()
, используя invalidate()
. Согласно моим журналам, drawPoint вызывается, но onDraw()
- нет. Так что я задал себе вопрос:onDraw() не вызывается в пользовательском представлении
Почему onDraw() не звонит, и как мне заставить DrawView называть его?
public class DrawView extends View {
...
@Override
public void onDraw(Canvas canvas) {
for (Point point : points) {
canvas.drawCircle(point.x, point.y, 5, paint);
Log.d("Checks", "onDraw is called");
}
}
public void drawPoint(int counter) {
Log.d("Checks", "Point coordinates: " + 40 + ", " + counter);
Point point = new Point();
point.y = 40;
point.x = counter;
points.add(point);
invalidate();
}
}
где вы назвали drawPoint()? –
Вместо прямого вызова view.drawPoint() из службы используйте обработчик для обновления ui. – vakman