在这种情况下,XML不是因素。我使用onDraw函数覆盖画布并将整个屏幕作为画布提供。
protected void onDraw(Canvas canvas){ canvas.drawColor(Color.BLACK);
int gemID=0;
for(int c=0;c<5;c++){
for(int r=0;r<5;r++){
gemID= GemField[c][r];
canvas.drawBitmap(bmps.get(gemID),c,r,null);
}
}
创建要绘制的画布后,我创建矩阵,然后填充矩阵,如下面的代码所示。
private void createGemField(){
Random rnd= new Random();
for(int col=0;col<5;col++){
for(int row=0;row<5;row++){
int gemNum = rnd.nextInt(4-0);
GemField[col][row]=gemNum;
}
}
}
private void drawGems(){
int gemID=0;
for(int col=0;col<5;col++){
for(int row=0;row<5;row++){
gemID=GemField[col][row];
canvas.drawBitmap(bmps.get(gemID),col,row,null);
}
}
}
不幸的是,我得到的图像在屏幕的左上角是方形的,有多个物体看起来像是相互缩放。更像是蛇鳞或带状疱疹,物体重叠但不完全。距离矩阵中起始位置的距离越远,它们重叠的越少。知道为什么会这样吗?
答案 0 :(得分:0)
canvas.drawBitmap(bmps.get(gemID),c,r,null);
此处,c
和r
是画布上绘制位图的点的x和y分量。我假设您的位图大于1px,因此您应将其更改为:
canvas.drawBitmap(bmps.get(gemID), 50 * c, 50 * r, null);
或类似的东西;位图之间现在是50px空间。