2011-06-13 19 views
6

Non riesco a mostrare un'immagine che viene salvata nella cartella res/drawable. Uso ImageGetter per farlo. Il codice è qui sotto:Android - Come visualizzare le immagini da risorse disegnabili?

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"; 

Quello che vedo sullo schermo quando si esegue è una piccola piazza con il testo "obj" su di esso. Quindi cosa c'è che non va? L'immagine non può essere letta o qualcos'altro? Come mostrare le immagini?

Onestamente ho Googled un sacco e provato altri metodi di ImageGetter pure, ma nessuno di loro sembra funzionare, ho provato anche questi, non funzionano:

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"; 

} 
+0

Che cosa significa "mostra immagine"? Dove vuoi mostrarlo? – Egor

risposta

28

Aggiornamento 12 Dicembre 2016:.

getResources() getDrawable() è stata sconsigliata a 22 api così si dovrebbe ora utilizzare ContextCompat.getDrawable esempio

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

Nella vostra attività è possibile chiamare questo per ottenere la vostra risorsa Drawable come oggetto Drawable

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

Se si desidera mostrare il vostro drawable in un ImageView si può fare questo:

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

o nel file XML

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/smiley"/> 
+0

Il problema è che non ho una posizione predefinita per dichiarare ImageView, poiché ImageView deve essere creato dinamicamente nel codice. Sulla base delle decisioni se ci saranno diverse direzioni comprese le immagini da visualizzare. – Yanny

+0

Hai guardato questo? http://stackoverflow.com/questions/2865452/is-it-possible-to-display-inline-images-from-html-in-an-android-textview – Damian

+0

Sì certo, ma ancora non funziona. Ho trovato comunque una soluzione, che è semplicemente usando SpannableStringBuilder. Questa è una soluzione molto semplice da usare per inserire immagini e in una vista testuale! – Yanny

6

È possibile ottenere l'immagine con l'aiuto di pImg. Sulla posizione dell'adattatore ottenere la stringa che è il nome dell'immagine. L'immagine deve essere presente nella cartella drawable.

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); 
+0

Grazie per l'idea, molto utile. –

1

un modo super facile dimostrare che è quello di scrivere questo nel vostro widget di ImageView nella vostra xml:

android:background="@drawable/your_file_name"

... e assicurarsi di aver messo quel file immagine (se png o jpg, ecc.) nella cartella drawable. Quando scrivi your_file_name, ti serve solo il titolo, non l'estensione del file.

Preferisco in questo modo la scrittura programmata nel tuo file .java (come mostrato con altre risposte sopra), perché il tuo xml ti mostrerà l'immagine in anteprima, non lo farà, mostrerà solo il segnaposto di ImageView.

0

modo più semplice - Possibilità di prendere in considerazione il codice qui sotto

Siamo in grado di trarre vantaggio da ImageView setImageResource, fare riferimento al di sotto del codice per lo stesso. inserisci l'immagine nel drawable come nell'ordine seguente

image_1.png, image_2.png, ecc.

int resId = getResources().getIdentifier("image_" + imagePosition, "drawable", getPackageName()); 
      imageview.setImageResource(resId); 
Problemi correlati