2011-01-25 114 views
3

試圖在onDraw(Canvas canvas)方法之外繪製到android視圖上。Android,Java&2d繪圖

@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 &機器人。

在此先感謝

回答

2

你需要遵循一個模式是這樣的:

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將在需要時調用。您可以通過在另一種方法中調用invalidate來強制OnDraw運行。在OnDraw方法中調用invalidate是沒有意義的(也許它也可能導致不穩定的行爲,因爲OnDraw在剛完成執行後需要再次運行)。

+0

謝謝!工作就像一種享受。 – Stevanicus 2011-01-25 12:46:35