java - Android、Java 和 2d 绘图

标签 java android graphics 2d

一直在尝试在 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/

相关文章:

java - 在应用程序类中保存数据错误

Java切换二维数组中的char元素

android - 在我的代码中将 clickListeners 放在哪里?

c# - OutOfMemoryException : Out of memory - System. Drawing.Graphics.FromImage

iphone - [[CAShapeLayer alloc] init] 和 [CAShapeLayer layer] 的区别

java - Cloudfoundry 中的 Spring 应用程序无法读取云属性

android - 是否可以像android一样查​​看iOS框架日志和应用程序日志?

android - 按重量更改Android中抽屉的宽度?

algorithm - 获取给定颜色的渐变,其中颜色位于渐变的中间

java - 方法 : java. lang.String.getCatalogName() 的签名不适用于参数