Вы должны следовать шаблону, подобному этому:
private boolean isPlayerVisible = false;
private int playerPosX;
private int playerPosY;
@Overrides
public void onDraw(Canvas canvas) {
c = canvas;
canvas.drawLine(0, 50, 100, 50, paint);
if (isPlayerVisible) {
Paint paint= new Paint();
paint.setColor(0xFFFFFFFF);
paint.setStrokeWidth(1);
c.drawCircle(playerPosX, playerPosY, 5, paint);
}
}
private void setPlayersPos(int x, int y) {
playerPosX = x;
playerPosY = y;
isPlayerVisible= true;
invalidate();
}
Все рисование происходит в методе OnDraw. OnDraw будет вызываться всякий раз, когда это необходимо. Вы можете принудительно запустить OnDraw, вызвав invalidate в другом методе. Бессмысленно вызывать invalidate в методе OnDraw (возможно, это также может привести к нестабильному поведению, поскольку OnDraw придется запускать снова после того, как он только что завершил выполнение).