2010-04-04 5 views
1

Dans une faible tentative d'apprendre un certain développement Android que je coincé à des graphiques. Mon but ici est assez simple:Assemblez tuiles dans android sdk et utiliser comme arrière-plan

  1. Prenez n petites images et construire une image aléatoire, plus grande que l'écran avec la possibilité de faire défiler.
  2. Vous avez déjà un objet animé se déplacer sur elle

J'ai regardé les exemples SDK, Lunar Lander en particulier, mais il y a quelques choses que je ne complètement envelopper ma tête. J'ai un plan de vue d'oiseau (qui dans ma tête semble raisonnablement sain d'esprit):

Comment est-ce que je fusionne les tuiles dans une grande image? L'arrière-plan est statique, donc je me dis que je devrais faire comme ceci:

  1. Faire un tableau 2D avec refs aux tuiles
  2. Faire un grand Drawable et d'en tirer les tuiles sur elle
  3. à tirer initialisation ce grand image comme fond
  4. a chaque onDraw redessiner l'arrière-plan du point précédent de l'objet en mouvement, et l'objet se déplaçant à son nouvel emplacement

le problème est entre les mains sur les choses. Je charge les petites images avec "Bitmap img1 = BitmapFactory.decodeResource (res, R.drawable.img1)", mais alors quoi? Dois-je faire une toile et dessiner les images dessus avec "canvas.drawBitmap (img1, x, y, null);"? Si oui, comment obtenir un Drawable/Bitmap à partir de cela?

Je suis complètement perdu ici, et j'apprécierais vraiment de l'aide pratique (je serais évidemment reconnaissant pour les conseils généraux, mais j'essaie principalement de comprendre les objets graphiques). Pour vous faire, cher lecteur, voir mon niveau de confusion vais-je ajouter mon dernier essai désespéré:

Drawable drawable; 
Canvas canvas = new Canvas(); 
Bitmap img1 = BitmapFactory.decodeResource (res, R.drawable.img1); // 50 x 100 px image 
Bitmap img2 = BitmapFactory.decodeResource (res, R.drawable.img2); // 50 x 100 px image 
canvas.drawBitmap (img1, 0, 0, null); 
canvas.drawBitmap (img2, 50, 0, null); 

drawable.draw (canvas); // obviously wrong as draw == null 
this.setBackground (drawable); 

Merci à l'avance

Répondre

0

Je fini par comprendre, ce que j'ai besoin pour le problème fondamental de carrelage un tas de bitmaps ensemble était un BitmapDrawable:

Bitmap myImage = Bitmap.createBitmap(450, 300, Bitmap.Config.ARGB_8888); 
Canvas canvas = new Canvas(myImage); 
Bitmap img1 = BitmapFactory.decodeResource (res, R.drawable.img1); // 50 x 100 px image 
Bitmap img2 = BitmapFactory.decodeResource (res, R.drawable.img2); // 50 x 100 px image 
canvas.drawBitmap (img1, 0, 0, null); 
canvas.drawBitmap (img2, 50, 0, null); 
this.setBackgroundDrawable(new BitmapDrawable(myImage)); 

j'avais évidemment en arrière avec la relation entre toile et Bitmap, je pensais que Canvas était un écran blanc sur lequel peindre. Apparemment (si je l'ai bien fait cette fois), il est connecté à un bitmap, et si celui-ci est celui-là, il est possible de l'utiliser.

je encore ne sais pas comment l'obtenir dans la fonction onDraw (Canvas) cependant, mais cela permet de résoudre le problème que j'avais.

Questions connexes