2011-11-19 16 views
20

Ho un'immagine jpg nella cartella drawable dell'applicazione Android la cui risoluzione è 1000x600. ho caricare l'immagine bitmap come questoBitmap getWidth restituisce il valore errato

Bitmap bitMap = BitmapFactory.decodeResource(getResources(), R.drawable.image); 

Dopo questo io chiamo bitMap .getWidth() che restituisce 1500. Come può essere? E come ottenere la giusta larghezza e altezza dell'immagine?

risposta

38

Questo è probabilmente a causa della diversa densità. La tua risorsa è probabilmente memorizzata in una cartella a media densità, ma il tuo dispositivo è hdpi. La densità media è 160 dpi, l'alta densità è 240 dpi. In questo modo la tua bitmap viene ridimensionata a 1,5 volte la dimensione originale. Vedi lo document on multiple screens per maggiori informazioni.

Se le risorse non sono disponibili nella densità corretta, il sistema carica le risorse predefinite e le ridimensiona in su o in giù in base alle esigenze per far corrispondere la densità dello schermo corrente.

Se si intendeva che fosse ad alta densità, inserirlo in hdpi drawable anziché drawable o draw-mdpi.

Aggiornamento:

Se si vuole ignorare la densità, metterlo in una cartella disegnabile-nodpi. Sempre dallo stesso documento:

Il modo più semplice per evitare il pre-ridimensionamento è mettere la risorsa in una directory di risorse con il qualificatore di configurazione nodpi. Ad esempio:

res/drawable-nodpi/icon.png 

Quando il sistema utilizza il bitmap icon.png da questa cartella, esso non scala che in base alla densità dispositivo corrente.

+0

Nel mio caso non ho bisogno di tale ridimensionamento, ho bisogno della stessa immagine con le stesse dimensioni per tutti gli schermi. La prima soluzione che mi viene in mente è quella di copiare quell'immagine in 3 cartelle disegnabili, ma non è una buona idea avere 3 copie della stessa immagine. C'è un'altra soluzione? –

+2

Puoi metterli in una cartella chiamata drawable-nodpi se non vuoi che vengano ridimensionati. Maggiori informazioni qui: http://developer.android.com/guide/topics/resources/providing-resources.html – Albin

+0

ok, la risposta è stata modificata e quella parte è stata aggiunta, grazie comunque –

Problemi correlati