2011-08-14 6 views
0

Je suis assez nouveau à Java et Android, mais je suis à la recherche d'un bon tutoriel qui ira sur la bonne voie. Je souhaite écrire une fonction qui dessine/redessine un motif de damier noir sur blanc en arrière-plan de la vue actuelle de mon application. Je ne veux pas utiliser une image réelle, car je veux être en mesure de redessiner l'arrière-plan sur les événements de redimensionnement, ect. et je souhaite modifier dynamiquement la taille des carrés ..dessiner fond (damier) java android

Merci pour toute aide

Répondre

-6

charge 2 images: noir et blanc

créer un jeu d'échecs tableau 2d [8] [8] d'un classe qui contiendra le étirables et la taille

créer une boucle 2d

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

mots-clés pour vous Google: tableaux 2d, dessin avec de la toile

6

La façon la plus efficace de le faire est d'avoir un Bitmap contenant un motif en damier (pour les carrés par exemple 2x2) et utiliser un BitmapShader avec le mode mosaïque 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

question stupide .. Qu'est-ce que bitmapTemplate? – erik

+0

Juste un bitmap qui contient votre motif en damier. –

+0

@RomainGuy Je fais un jeu dans lequel je veux déplacer ces Bitmaps carrelés. Donc les 'x' et' y' sont en train de changer. Cela semble très étrange, l'arrière-plan ne bouge pas avec le rectangle, il reste juste. Comment régler ceci? –

3

J'exigé cela et nécessaire c'est un peu plus flexible que de fournir mes propres ressources bitmap. Donc, voici une option à la volée.

Appelez cette méthode dans vos méthodes onCreate() ou constructeur et enregistrez la peinture. Ensuite, utilisez simplement la peinture pendant les opérations de remplissage dans votre 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; 
}