Android, Java и 2D рисование - PullRequest
       8

Android, Java и 2D рисование

3 голосов
/ 25 января 2011

Пытался нарисовать на экране Android вне метода onDraw (Canvas canvas).

@Overrides
public void onDraw(Canvas canvas) {
    c = canvas;
    canvas.drawLine(0, 50, 100, 50, paint);
    invalidate();
}

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

public void drawPlayer(int x, int y){
        c.drawCircle(x, y, 5, paint);
    }

Я довольно новичок в 2D-графике в Java и Android.

Заранее спасибо

1 Ответ

2 голосов
/ 25 января 2011

Вы должны следовать шаблону, подобному этому:

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 придется запускать снова после того, как он только что завершил выполнение).

...