有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Android、Java和2d绘图

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

@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&;安卓

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    你需要遵循这样的模式:

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