一直在尝试在 onDraw(Canvas canvas) 方法之外的 android View 上绘制。
@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 图形还很陌生。
提前致谢
最佳答案
您需要遵循这样的模式:
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 刚执行完就需要再次运行)。
关于java - Android、Java 和 2d 绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4793467/