2010-07-21 6 views
2

J'ai donc créé un petit morceau de code qui va insérer et manipuler quelques images. Maintenant, mon principal problème est que c'est très laid et long, je me demandais si quelque chose pouvait être fait pour le rendre plus joli.Rendre le code assez intéressant (layout)

RelativeLayout mRelativeLayout = (RelativeLayout) findViewById(R.id.board); 

    ImageView i = new ImageView(this); 
    i.setImageResource(R.drawable.blue_1); 
    i.setId(400); 

    ImageView j = new ImageView(this); 
    j.setImageResource(R.drawable.red_1); 
    j.setId(401); 

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(40,62); 
    params.addRule(mRelativeLayout.ALIGN_PARENT_BOTTOM); 
    RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(40,62); 
    params1.addRule(mRelativeLayout.ALIGN_PARENT_BOTTOM); 
    params1.addRule(mRelativeLayout.RIGHT_OF, 400);  

    mRelativeLayout.addView(i, params); 
    mRelativeLayout.addView(j, params1); 
    setContentView(mRelativeLayout); 

Par exemple, j'ai essayé avec seulement un layoutparams, mais il semble affecter les deux images, même si je modifier après la première image est ajoutée.

J'ai aussi une fonction qui peut renvoyer une chaîne telle que blue_1 o RED_1 comme une chaîne pour me aider à imprimer mes images, mais il me permettra pas de mettre les chaînes dans le i.setImageResource pour obtenir l'image :(

Qu'est-ce que je peux faire

+1

Y a-t-il une raison pour laquelle vous essayez de faire cela dans le code plutôt que dans un fichier XML de mise en page? Y at-il une raison pour laquelle vous essayez de composer des chaînes pour faire référence à des ressources plutôt que d'utiliser les valeurs d'ID de ressource elles-mêmes? – adamp

+0

oui, je le veux dynamiquement, en essayant de faire un jeu de cartes :) il serait donc plus facile pour moi de dessiner les cartes sur la main par exemple avec juste un hand.getCard(); dans le setImageResource –

Répondre

2

? La meilleure façon de ranger votre code en serait de se débarrasser de presque tous et simplement définir votre mise en page dans un fichier XML. de cette façon, vous pouvez simplement appeler setContentView(R.layout.my_layout_name) au lieu de créer manuellement les widgets et les paramètres de mise en page vous-même Si vous n'êtes pas très familier avec la déclaration des dispositions en XML, jetez un oeil à the dev docs ou, si vous avez besoin d'instancier différentes parties de l'interface utilisateur séparément , vous pouvez gonfler la mise en page avec un LayoutInflater. Pour la deuxième question, la classe Resources a une méthode getIdentifier.

Pour la deuxième question, la classe Resources a une méthode getIdentifier. Vous pouvez faire quelque chose comme ceci:

getResources().getIdentifier("blue_1", "drawable", "com.my.package.here")

Ça va retourner l'ID de ressource, que vous pouvez ensuite utiliser au lieu de R.drawable.blue_1.

+0

ah génial avec la dernière partie était ce que je cherchais :) Je regarde dans le gonfleur aussi bien :) –

+1

aussi cela m'a aidé un peu :) getResources(). getIdentifier ("blue_1", "drawable" , getPackageName()); –