Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
安卓,Java,;二维绘图_Java_Android_Graphics_2d - Fatal编程技术网

安卓,Java,;二维绘图

安卓,Java,;二维绘图,java,android,graphics,2d,Java,Android,Graphics,2d,一直在尝试在onDraw(Canvas Canvas)方法之外绘制android视图 我希望在屏幕上绘制另一个字符时保持上面的显示,具体取决于xPosition和yPosition public void drawPlayer(int x, int y){ c.drawCircle(x, y, 5, paint); } 我对java和android中的2d图形非常陌生 提前感谢您需要遵循以下模式: private boolean isPlayerVisible = fa

一直在尝试在onDraw(Canvas Canvas)方法之外绘制android视图

我希望在屏幕上绘制另一个字符时保持上面的显示,具体取决于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需要在刚执行完之后再次运行)

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();
}