web-dev-qa-db-de.com

Android - Wie zeige ich Bilder von Ressourcen zeichnbar?

Ich kann kein Bild anzeigen, das im Ordner res/drawable gespeichert ist. Ich benutze dazu ImageGetter. Der Code ist unten:

ImageGetter imageGetter3 = new ImageGetter() {                
    public Drawable getDrawable(String source) { 
        int id=0; 
        if (source.equals("smiley")) { 
            id = R.drawable.smiley; 
        } 
        Drawable d = getResources().getDrawable(id); 
        d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); 
        return d; 
    } 
};

directions += "Je bent bij lokaal " + vertrek.getNaam() + "\n" 
           + "Sta met je rug voor de deur\n" 
           + Html.fromHtml("<img src=\"smiley\">", imageGetter3, null) + " Draai naar links\n";

Was ich beim Laufen auf dem Bildschirm sehe, ist ein kleines Quadrat mit "obj" -Text. Also, was ist los? Das Bild kann nicht gelesen werden oder etwas anderes? Wie zeige ich Bilder?

Ehrlich gesagt habe ich viel gegoogelt und andere Methoden von ImageGetter ausprobiert, aber keine davon scheint zu funktionieren, ich habe auch diese ausprobiert, sie funktionieren nicht:

ImageGetter imageGetter2 = new ImageGetter() { 
 public Drawable getDrawable(String source) { 
      Drawable d = null; 
      d = Drawable.createFromPath(source); 
      d.setBounds(0,0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); 
      return d; 
 } 
};

ImageGetter imageGetter = new ImageGetter() {                
 public Drawable getDrawable(String source) { 
     Drawable drawFromPath; 
     int path = Route.this.getResources().getIdentifier(source, "drawable","com.prj56.tracingapp"); 
     drawFromPath = (Drawable) Route.this.getResources().getDrawable(path); 
     drawFromPath.setBounds(0, 0, drawFromPath.getIntrinsicWidth(), drawFromPath.getIntrinsicHeight()); 
     return drawFromPath; 
 } 
};  

================================================ ======= if (....) {ImageView iv1 = new ImageView (this); iv1.setImageResource (R.drawable.smiley);

    directions += "Je bent bij lokaal " + vertrek.getNaam() + "\n" 
       + "Sta met je rug voor de deur\n";
       HERE COMES THE IMAGE! BUT HOW TO DO THIS? It's within directions textview...
    directions += " Draai naar links\n";

}
8
Yanny

Update 12 Dez 2016

getResources (). getDrawable () wurde in API 22 nicht mehr unterstützt. Sie sollten jetzt ContextCompat.getDrawable verwenden, z.

Drawable d = ContextCompat.getDrawable(context, R.drawable.smiley);

In Ihrer Aktivität können Sie dies aufrufen, um Ihre Drawable-Ressource als Drawable-Objekt zu erhalten

Drawable d = getResources().getDrawable(R.drawable.smiley);

Wenn Sie Ihre Zeichnung in einer ImageView anzeigen möchten, können Sie Folgendes tun:

ImageView i = new ImageView(this);
i.setImageResource(R.drawable.smiley);

oder in Ihrer XML-Datei

<ImageView   
  Android:layout_width="wrap_content"
  Android:layout_height="wrap_content"
  Android:src="@drawable/smiley"/>
30
Damian

Sie können das Bild mit Hilfe von pImg erhalten. Basierend auf der Adapterposition erhalten Sie die Zeichenfolge, die dem Bildnamen entspricht. Das Bild sollte sich im zeichnerischen Ordner befinden.

ImageView prodImg=(ImageView)view.findViewById(R.id.img_proj_name);
    String pImg=prod.get(position);
    int resID = view.getResources().getIdentifier("@drawable/"+pImg , "drawable", parentView.getContext().getPackageName());
    prodImg.setImageResource(resID);
6
CoderDecoder

Eine sehr einfache Möglichkeit, dies zu zeigen, besteht darin, dies in Ihrem ImageView-Widget in Ihre XML-Datei zu schreiben:

Android:background="@drawable/your_file_name"

... und vergewissern Sie sich, dass Sie diese Bilddatei (ob png oder jpg usw.) in Ihrem Zeichenordner gespeichert haben. Wenn Sie your_file_name schreiben, benötigen Sie nur den Titel, nicht die Dateierweiterung.

Ich bevorzuge diesen Weg dem programmgesteuerten Schreiben in Ihrer .Java-Datei (wie in den anderen Antworten oben gezeigt), da Ihre XML-Datei Ihnen das Bild in der Vorschau anzeigt, programmgesteuert nicht, sondern nur den ImageView-Platzhalter.

1
Azurespot

Einfachste Möglichkeit - Der folgende Code kann berücksichtigt werden

Wir können Imageview setImageResource nutzen, siehe den Code für den gleichen Code. Bild in die Zeichenfolge wie in der folgenden Reihenfolge einordnen

image_1.png, image_2.png usw.

int resId = getResources().getIdentifier("image_" + imagePosition, "drawable", getPackageName());
             imageview.setImageResource(resId);
0
Lakshmanan
  Drawable drawable = getResources().getDrawable(R.mydrawableID);

Jetzt können Sie es als Bild verwenden, wie: -

ImageView myImage = findViewById(R.id.yourImageView);

Jetzt feuere das -

myImage.setImageResource(drawable);
0
Amit Sharma