2011-01-25 68 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