我是相當新的Java和Android的,但要尋找一個很好的教程,將得到正確的軌道上。我想編寫一個函數,在我的應用程序的當前視圖的背景上繪製/重繪白色棋盤圖案上的黑色。我不想使用實際的圖像,因爲我希望能夠重新調整大小事件背景等。和我想動態改變的平方的大小..繪製背景(棋盤)的Java的Android
感謝您的幫助
我是相當新的Java和Android的,但要尋找一個很好的教程,將得到正確的軌道上。我想編寫一個函數,在我的應用程序的當前視圖的背景上繪製/重繪白色棋盤圖案上的黑色。我不想使用實際的圖像,因爲我希望能夠重新調整大小事件背景等。和我想動態改變的平方的大小..繪製背景(棋盤)的Java的Android
感謝您的幫助
負載2倍的圖像:黑白
創建一個二維數組棋盤[8] [8]出來的類將包含繪製和大小
創建二維循環
for (i < 8)
for (j < 8)
draw with canvas (chessboard[i][j].drawable)
關鍵字爲你谷歌: 二維數組,繪圖用帆布
的最有效的方式來做到這一點是具有包含棋盤圖案(例如2×2的正方形)位圖,並使用BitmapShader與REPEAT瓦片模式:
BitmapShader shader = new BitmapShader(bitmapTemplate, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
Paint paint = new Paint();
paint.setShader(shader);
// in your draw method
canvas.drawRect(x, y, width, height, paint);
予需要此,需要它比提供我自己的位圖資源更靈活一些。所以這裏是一個動態選項。
調用此方法在您的onCreate()或構造方法,節省油漆。然後在onDraw()的填充操作過程中簡單地使用這個繪圖。
private Paint createCheckerBoard(int pixelSize)
{
Bitmap bitmap = Bitmap.createBitmap(pixelSize * 2, pixelSize * 2, Bitmap.Config.ARGB_8888);
Paint fill = new Paint(Paint.ANTI_ALIAS_FLAG);
fill.setStyle(Paint.Style.FILL);
fill.setColor(0x22000000);
Canvas canvas = new Canvas(bitmap);
Rect rect = new Rect(0, 0, pixelSize, pixelSize);
canvas.drawRect(rect, fill);
rect.offset(pixelSize, pixelSize);
canvas.drawRect(rect, fill);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setShader(new BitmapShader(bitmap, BitmapShader.TileMode.REPEAT, BitmapShader.TileMode.REPEAT));
return paint;
}
愚蠢的問題..什麼bitmapTemplate? – erik
只是一個包含您的棋盤格局的位圖。 –
@RomainGuy我在做一個遊戲,我想提出這樣的瓷磚位圖。所以'x'和'y'正在改變。它看起來很奇怪,背景不隨矩形移動,它只是停留。如何解決這個問題? –