我有一个GameCanvas类扩展View,我在我的xml布局中使用它:
public class GameCanvas extends View {
private Canvas canvas;
private Paint painter;
public GameCanvas(Context ctx, AttributeSet attrs)
{
super(ctx, attrs);
painter = new Paint();
painter.setAntiAlias(true);
painter.setColor(Color.BLACK);
painter.setStyle(Paint.Style.STROKE);
painter.setStrokeWidth(5);
}
@Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
this.canvas = canvas;
// JUST AN EXAMPLE
int w = 50;
// This should draw a table, it doesn't work.
for(int i = 0; i<3; ++i)
{
for(int j = 0; j<3; ++j)
{
int x = j*w;
int y = i*w;
canvas.drawRect(x,y,w,w, painter);
}
}
// This is drawn, this works!
canvas.drawRect(50,50,100,100, painter);
// This doesn't work
canvas.drawRect(300,450,100,100, painter);
}
}
我的xml:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/game_bottombar"
android:id="@+id/game_canvas_container">
// (Hiding my ID)
<com.---.---.---.GameCanvas
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
画布工作,我在屏幕上看到它,我尝试将背景颜色更改为红色或绿色,它可以工作并填充整个区域。
此外,一行有效:
canvas.drawRect(50,50,100,100, painter);
显然,当我在100或150以下的坐标中绘制一个矩形时,它可以工作,但是如果我的矩形大小为400,它也可以工作,并且矩形填充所有空间,所以问题不在于画布大小
调试器说我的画布大小是:720 x 952
*******更新 - 解决方案*************** /
我使用的是宽度和高度而不是右边和底部:
drawRect( left, top, right, bottom);
右边和底部是从矩形末端到画布末端的距离。
我不知道为什么这样做,工作非常不愉快。我不知道画布中是否已有方法,我没有找到它,所以我自己写了:
public void DrawRectangle(int x, int y, int w, int h)
{
canvas.drawRect(x, y, x+w, y+h, painter);
}
我知道这很简单,但我更喜欢使用它。