2012-03-19 9 views
14

Quando si verifica lo sviluppo e le prestazioni di Android, se si ha imageview quale sarebbe più veloce o migliore (c'è comunque una differenza!): SetImageResource e setDrawable So che uno prende ID e l'altro prende drawable. Ma otterrò comunque il drwable dall'ID. Quale pensi sia meglio?setImageResource Vs setDrawable

Oppure dovrei evitare di usare imageview alltogether e usare load/draw bitmap? troppe scelte è confusa Grazie per i commenti

+0

http://stackoverflow.com/questions/11222549/difference-of-setting-an-image-from-resource-to-drawables –

risposta

59

Sono diversi. Da Android documents.

setImageResource: Questo fa lettura e decodifica bitmap sul thread UI, che può causare un singhiozzo latenza.

Se questo è un problema, è consigliabile utilizzare setImageDrawable (android.graphics.drawable.Drawable) o setImageBitmap (android.graphics.Bitmap) e BitmapFactory.

+2

Nell'adattatore GridView ho utilizzato setImageResource e il ritardo nello scorrimento. Quando ho cambiato le chiamate a setImageBitmap, GridView ha iniziato a scorrere senza problemi. Il tempo di esecuzione di questi 2 metodi è ovviamente diverso. Tuttavia, non fa differenza cosa usare, se lo sviluppatore lavora con viste statiche (che non vengono spostate). –

+0

Yeonsh, risposta davvero meravigliosa, mi fa risparmiare tempo, grazie – ganesh

+0

Ho accettato la nuova risposta :) – Snake

2

Coloro esiste come metodi di convenienza in modo da non dover lavorare sempre in giro a sempre ottenere un disegnabile o sempre dover passare in un ID di risorsa. Varie situazioni richiedono approcci diversi.

Tutto sommato, non c'è differenza. Usa ciò che funziona per la tua situazione.

+0

Grazie, e suppongo che non ci siano differenze e che io usi drawable o bitmap, giusto? – Snake

+0

Da qualche parte nel codice sorgente, sì;) Ma ancora una volta, ImageView prende sia Drawable che Bitmap. Non è necessario convertirli l'uno con l'altro per visualizzarlo con ImageView. – Phix

+3

Si prega di prendere in considerazione la modifica della bandiera per la risposta corretta. Questo NON è la risposta corretta. La risposta più utile è sotto e ha il punteggio più alto. – Zordid

1

Penso che lo setImageDrawable sia più adatto per operazioni a uso intensivo di memoria, come lo scorrimento di un RecyclerView, l'acquisizione di bitmap da memcache. Ma per qualcosa di più semplice, setImageResource è l'API migliore al giorno d'oggi.

Problemi correlati