2011-08-14 127 views
0

我是相當新的Java和Android的,但要尋找一個很好的教程,將得到正確的軌道上。我想編寫一個函數,在我的應用程序的當前視圖的背景上繪製/重繪白色棋盤圖案上的黑色。我不想使用實際的圖像,因爲我希望能夠重新調整大小事件背景等。和我想動態改變的平方的大小..繪製背景(棋盤)的Java的Android

感謝您的幫助

回答

-6

負載2倍的圖像:黑白

創建一個二維數組棋盤[8] [8]出來的類將包含繪製和大小

創建二維循環

for (i < 8) 
for (j < 8) 
    draw with canvas (chessboard[i][j].drawable) 

關鍵字爲你谷歌: 二維數組,繪圖用帆布

6

的最有效的方式來做到這一點是具有包含棋盤圖案(例如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); 
+0

愚蠢的問題..什麼bitmapTemplate? – erik

+0

只是一個包含您的棋盤格局的位圖。 –

+0

@RomainGuy我在做一個遊戲,我想提出這樣的瓷磚位圖。所以'x'和'y'正在改變。它看起來很奇怪,背景不隨矩形移動,它只是停留。如何解決這個問題? –

3

予需要此,需要它比提供我自己的位圖資源更靈活一些。所以這裏是一個動態選項。

調用此方法在您的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; 
}