2012-10-30 12 views
6

Voglio visualizzare un'immagine png su Android. Questo è il file immagine:Perché Android perde la qualità dell'immagine durante la visualizzazione di un file png?

enter image description here

L'estremità destra è un po 'più scuro di sinistra.

Ma la qualità dell'immagine perso su richiesta Android (utilizzando ImageView):

enter image description here

Si prega di notare parte nella cornice rossa. Il colore non cambia senza problemi.

Ma se io uso il browser del mio telefono Android, gioca bene (quindi non è ragione dello schermo del telefono):

enter image description here

Questo è il mio codice di Android, che è piuttosto semplice:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 
    <ImageView android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="@drawable/hhh"/> 
</LinearLayout> 

dove hhh è la mia prima immagine pubblicata qui, che è sotto res/drawable.

L'ho provato sul mio telefono Android (Android 2.3.6) e sul simulatore Android (con Android 2.2/2.3/4.0), tutti non sono visualizzati bene. Ma suona bene sul mio pad Android (Android 4.0.3).

Qual è il problema e come risolverlo?

+1

Prova risparmio png con canale alfa, (pixel non perfettamente opachi) dal tuo editor di immagini. –

+0

Hai provato a usare il codice per impostare ImageView? Utilizzando il codice è possibile abilitare più opzioni C'è una domanda simile la cui risposta può aiutare. http://stackoverflow.com/questions/7312996/how-to-improve-the-image-quality-when-images-are-in-drawable-folder – dumbfingers

+1

http://www.curious-creature.org/ 2010/12/08/bitmap-quality-banding-and-dithering/ – Selvin

risposta

7

Le immagini in res/drawable sono compresse. This is supposed to be lossless, ma ho sentito parlare di problemi simili in passato.

Spostalo in res/raw e provalo.

+0

Ho appena provato 'res/raw', ma non fortunato. Ho spostato l'immagine in 'res/raw' e ho cambiato il codice in' ', non è stato visualizzato bene. – Freewind

+1

Il problema che hai è banding, hai provato a dithering? Questo ha alcune opzioni/soluzioni alternative http://stackoverflow.com/questions/4769885/androiddither-true-does-not- dither-whats-wrong –

+0

La risposta da questa domanda funziona: Freewind

0

Prova ad aggiungere quanto segue al tuo Activity e vedere se aiuta.

@Override 
public void onAttachedToWindow() { 
    super.onAttachedToWindow(); 
    Window window = getWindow(); 
    //eliminates color banding 
    window.setFormat(PixelFormat.RGBA_8888); 
} 
+0

grazie ma ancora senza fortuna – Freewind

Problemi correlati