2010-03-17 10 views
6

Desidero visualizzare un'immagine da un URL con una Webview su Android.Android: Immagine visualizzata a Webview dall'URL con perdita di alta qualità

Con i telefoni Android con versione 1.5 e 1.6 non ci sono problemi. ma la stessa immagine e lo stesso codice su un AndroidPhone con la versione 2.0 e l'immagine è completamente pixelata.

Come per Android ridimensionare l'immagine prima su una più piccola e ridimensionarla nuovamente su "normale".

Sfortunatamente è importante visualizzare la foto senza alcuna perdita di qualità.

Ho provato ad integrarlo nella cartella di origine per mostrarlo come un'immagine normale, ma su Android 2.0 ottengo un'eccezione perché l'immagine è troppo grande. (Ad Android 1.6 non ci sono problemi)

Qualche idea su come posso visualizzare l'immagine senza perdita di qualità con Android 2.0?

+0

Si potrebbe prendere in considerazione la pubblicazione di un URL per l'immagine in questione. – CommonsWare

risposta

3

Se non l'hai già fatto, aggiungere questo al vostro manifesto:

<supports-screens 
     android:largeScreens="true" 
     android:normalScreens="true" 
     android:smallScreens="true" 
     android:resizeable="true" 
     android:anyDensity="true" /> 

Senza questo, tutto sarà ridimensionata.

Inoltre, se non si desidera che il dispositivo/emulatore di scalare il drawable si deve creare drawable per ogni densità mettendo una versione a risoluzione più elevata nella cartella hdpi

res/drawable-ldpi/my_icon.png  // icon image for low density 
res/drawable-mdpi/dpi/my_icon.png // icon for medium density 
res/drawable-hdpi/my_icon.png  // icon image for high density 
+0

grazie per la tua risposta, ma ogni volta che provo ad aggiungere "android: resizable = true" c'è un errore. Sembra che non conosca questo parametro. O devo aggiungere anche qualcosa di diverso? Ho provato con minSdkVersion = 4. – Merlino

+0

Non penso che ci dovrebbe essere qualcosa di più necessario per rendere ridimensionabile = vero lavoro. Io uso minSdk 3 e targetSdk = 5 ... ma non penso che dovrebbe fare alcuna differenza.Im utilizzando

+0

Cosa succede se si tenta di aggiungere un ImageView con un'immagine, fa l'ImageView anche ottenere ridimensionato. Vedi qualche artefatto sull'immagine? (solo per verificare se la tua app sta ridimensionando la vista o meno) –

1

Uso android:resizeable="true" invece di android:resizable="true". Manca lo "e".

+0

No? Questo dice che è 'ridimensionabile': http://developer.android.com/guide/practices/screens_support.html –

0

Molto tempo questa discussione è qui, ma qui ci sono i miei due centesimi:

facendo la stessa cosa che mi ha portato due giorni per capire qual è il mio problema era:

su uno dei miei telefono usavo wifi, dall'altro sono stato collegato a bordo tramite il mio gestore telefonico.

Risulta che molti operatori di tutto il mondo utilizzano un proxy che ridimensiona le immagini al volo per alleggerire il carico sulla rete. Il ridimensionamento è piuttosto difficile e la qualità è pessima.

Quindi nel mio caso non era dovuto alla versione del framework come pensavo, ma dal tipo di connessione che ho usato.

+0

Ho scaricato un'immagine dalla rete. Se apro il file locale in una webview, viene pixelato. Se apro il file in una vista grafica, non viene più visualizzato come un pixel, ma non posso più eseguire lo zoom. – Janusz

+0

Questo probabilmente a causa del fatto che la richiesta fatta dalla webview contiene il tipo mime che viene utilizzato dall'isp per attivare il downscale. Mentre l'imageview probabilmente richiede un trasferimento binario. Non sono sicuro però. Solo per quello che sai, è possibile utilizzare l'immagine che hai scaricato per creare un file html locale che dovresti visualizzare nella webview recuperando la capacità di zoom. Un po 'ingombrante ma funziona. Oppure puoi dare un'occhiata a: http://code.google.com/p/android-pinch/ – Yahel

0

In ogni caso, credo sia uno strano comportamento del controllo WebView. C'è una piccola soluzione che è utile nel caso in cui si forniscono le immagini tramite il proprio server. Se l'immagine è in formato PNG, puoi impostare la profondità del colore su 8 bit. Anche se ridurrà la qualità del colore, l'immagine non sarà sfocata quando ingrandita.

+0

Infatti la profondità colore a 8 bit aiuta a ridurre l'utilizzo della memoria, ma ha comunque la possibilità di perdere quantità quando la dimensione dell'immagine è troppo grande. – superuser

Problemi correlati