61 votes

Android - Ouvrir la ressource de @drawable String

J'ai:

String uri = "@ drawable / myresource.png";

Comment puis-je charger cela dans ImageView? this.setImageDrawable?

170voto

pfleidi Points 1951

Si vous avez vraiment besoin de travailler avec une chaîne, essayez quelque chose comme ceci:

 private void showImage() {
    String uri = "drawable/icon";

    // int imageResource = R.drawable.icon;
    int imageResource = getResources().getIdentifier(uri, null, getPackageName());

    ImageView imageView = (ImageView) findViewById(R.id.myImageView);
    Drawable image = getResources().getDrawable(imageResource);
    imageView.setImageDrawable(image);
}
 

Sinon, je vous recommanderais de travailler avec les références R. * comme ceci:

   int imageResource = R.drawable.icon;
  Drawable image = getResources().getDrawable(imageResource);
 

25voto

CommonsWare Points 402670

Tout d’abord, ne le faites pas, car la syntaxe @drawable n’a pas de sens en code Java. Utilisez int resourceId=R.drawable.myresource .

Si, pour une raison quelconque, vous indiquez un nom de ressource et avez besoin de l'ID entier, utilisez getIdentifier() sur l'objet Resources .

11voto

vous pouvez également ajouter votre propre variable .. dans mon cas, scene.name entre les réponses que j'ai suivies @pfleidi. c signifie contexte.

   String uri = "drawable/"+ scene.name; 
  int imageResource = c.getResources().getIdentifier(uri, null, c.getPackageName());


  imageList.setImageResource(imageResource);
 

6voto

Wendel Points 46

Cela fait longtemps que je suis en retard, mais mon préféré est d'utiliser le contexte:

context.getApplicationContext().getResources().getDrawable(R.drawable.placeholder_image)

placeholder_image est l'id de la ressource. Dans votre cas, R.drawable.myresource .

Le contexte peut être une activité ou une application. Partout où vous vous trouvez, il est fait référence au contexte, que vous pouvez utiliser pour obtenir le contexte de l'application.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X