Android,Java和2D绘图

3

我一直在尝试在onDraw(Canvas 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和Android中的2D图形还比较陌生。

先行致谢。

1个回答

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需要在刚刚执行完之后再次运行)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接