2012-04-19 11 views
9

Mi piacerebbe usare una WebView per visualizzare immagini potenzialmente grandi (in modo da impossessarsene della gestione della memoria). Per la prova che sto caricando questo codice nella WebViewMetti un'immagine all'interno di una webview e inseriscila nella larghezza

<head></head> 
<body> 
    <img alt="test" src="file:///android_asset/cute-cat-sleeping.jpg"> 
</body> 

Il problema è che se lo carico in una rete "come è". La visualizzazione Web consente solo di ridurre fino a quando la prima dimensione dell'immagine non si adatta allo schermo. In questo esempio l'altezza dell'immagine è totalmente mostrata nella WebView e poi non più di zoom permesso:

No zoom no setUseWideViewPort

Come si può vedere questa modalità non permette una corretta visualizzazione dell'immagine globale, nonostante che, quando l'immagine è ingrandita il comportamento nel giusto e angoli inferiori sono corrette, come potete vedere qui

correct zoom display

Così ho provato le .getSettings (WebView)(). setUseWideViewPort (vero) e il risultato è che ho possibile zoomare a mo re della larghezza dell'immagine

with setUseWideViewPort

e il comportamento ingrandita non è corretto nei confini in basso a destra:

zoom with setUseWideViewPort

Riassumendo: Mi piacerebbe la massima diminuire possibile essere ImageWidth = larghezza webview e comportamento zoom come nella seconda immagine:

enter image description here

risposte complete e/o Utili saranno bountied

EDIT: Bounty aperto per Vinayak.B

+1

Non è sicuro. Ma prova a modificare l'html. imposta la larghezza di al 100%. – Shaiful

+0

fa un comportamento strano con lo zoom come salta a zone diverse da quelle zoom = ( – Addev

+0

Si adatta alla finestra? Come l'ultima immagine? Forse puoi controllare lo zoom o altri comportamenti usando javascript e css. – Shaiful

risposta

22

Using Viewport Metadata può aiutare a fare questo

La finestra è l'area in cui viene disegnata la vostra pagina web.Sebbene area visibile della finestra corrisponde alla dimensione dello schermo, la finestra ha le sue dimensioni che determinano il numero di pixel è possibile una pagina web

Prova sotto

WebSettings settings = webView.getSettings(); 
settings.setUseWideViewPort(true); 
settings.setLoadWithOverviewMode(true); 
5

Carica file HTML in Webview e mettere la vostra immagine nella cartella di asset e leggere il file immagine utilizzando HTML.

<htm> 
    <table> 
    <tr> 
     <td> 
      <img src="cat.gif" width="100%" alt="Hello"> 
     </td> 
    </tr> 
</table> 
</html> 

Ora caricare il file HTML in Webview

webview.loadUrl("file:///android_asset/abc.html"); 

modo o nell'altro

se si utilizza LinearLayout, può prendere un parametro di sfondo che può essere un colore o una risorsa.

Quindi nel file main.xml contiene Webview. semplicemente aggiunto un

android:background="@+drawable/backgroundmain" 

e utilizzare

web.setBackgroundColor(0); 

Per rendere il WebView trasparente per vedere l'immagine di sfondo dietro.

+1

Provoca anomalie nello zoom. –

4

qui è la soluzione prevista img larghezza tag al 100% nel codice HTML e poi caricarlo nel vostro WebView utilizzando loadDataWithBaseURL(null, htnlString, "text/html", "UTF-8", null); metodo

provare questo codice

String htnlString = "<!DOCTYPE html><html><body style = \"text-align:center\"><img src=\"http://shiaislamicbooks.com/books_snaps/UR335/1.jpg\" alt=\"pageNo\" width=\"100%\"></body></html>"; 
yourWebView.loadDataWithBaseURL(null, htnlString, "text/html", "UTF-8", null); 
Problemi correlati