试图在onDraw(Canvas画布)方法之外绘制一个android视图。
@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);
}
我对java&中的2D图形很新。机器人。
提前致谢
答案 0 :(得分: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在完成执行后需要再次运行)。