ho appena scritto su un articolo per questo. Desidero essere in grado di rispondere alla tua domanda.
https://plus.google.com/112740367348600290235/posts/VNAfFLDcKrw
ImageView
ha 4 API per specificare l'immagine. Quale usare? Qual è la differenza?
- setImageDrawable (drawable Drawable)
- setImageBitmap (bitmap bm)
- setImageResource (int reSID)
- setImageURI (URI uri)
ImageView
, dal nome, viene utilizzato per mostra un'immagine. Ma cos'è un'immagine? A Bitmap
è un'immagine non difficile da comprendere e per questo motivo viene utilizzato setImageBitmap
. Tuttavia, internamente, lo ImageView
ha un numero Drawable
ma non uno Bitmap
e questo è ciò che setImageDrawable
per. Quando si chiama setImageBitmap
, internamente, per prima cosa la bitmap verrà spostata su BitmapDrawable
, che è IS-A Drawable
, quindi chiamare setImageDrawable
.
Ecco il codice.
public void setImageBitmap(Bitmap bm) {
setImageDrawable(new BitmapDrawable(mContext.getResources(), bm));
}
Quindi, per quanto riguarda le API 3 e 4?
Dovresti già sapere che ci sono molti modi per creare una bitmap: da un percorso file, da un flusso di input, dall'URI o dal file di risorse.
BitmapFactory.decodeFile(String pathName)
BitmapFactory.decodeStream(Inputstream)
BitmapFactory.decodeResource(Resource res, int id)
BitmapFactory.decodeByteArray(byte[] data)
Consapevole di questo, è facile da capire setImageResource
/setImageUri
è proprio uguale a setImageBitmap
.
Per riassumere, setImageDrawable
è la funzione primitiva su cui si basano le altre API. Gli altri 3 sono solo metodi di supporto che ti fanno scrivere meno codice.
Inoltre, è molto importante tenere presente che lo ImageView
ha effettivamente un valore Drawable
, che non deve necessariamente essere un BitmapDrawable
! È possibile impostare qualsiasi Drawable
nella vista Immagine.
Oltre all'impostazione dello Drawable
tramite l'API Java, è anche possibile utilizzare l'attribuzione XML per impostare l'origine Drawable
per ImageView
. Vedi l'esempio qui sotto. Si noti che la forma potrebbe essere un file immagine (.png, .jpg, .bmp) o un file xml.
Penso che nessuna differenza in questi due esempi concreti –