Può WebView di Android ridimensionare automaticamente immagini enormi?

In alcuni browser web, le immagini enormi vengono ridimensionate automaticamente per adattarsi allo schermo.

È ansible fare lo stesso in un WebView di Android?

  • Invia trasmissione sul clic di notifica
  • Theme.AppCompat.Light.DarkActionBar - Nessuna risorsa trovata
  • La rotazione di Quaternion non funziona come eccezionale
  • Sicurezza del database Sqlite
  • Supporto OMA DRM v1 e v2 su Android
  • Recupera il Token di accesso di Google dopo averlo autenticato utilizzando Firebase Authentication
  • La pagina web contiene solo l'image, magari aggiungendo qualche JavaScript potrebbe fare il trucco?
    Qualcuno ha già fatto questo?

    Nota: non conosco la dimensione dell'image in anticipo.

  • Come fare clic o toccare un text TextView su parole diverse?
  • TextView state_pressed / state_focused / state_selected cambiamento di stile
  • Come build il mio SDK Android
  • Leakcanary rapporto di perdita di memory usando Otto
  • Ripeti le preferenze in PreferenceActivity sul ripristino
  • AsyncTask doInBackground non viene eseguito
  • 7 Solutions collect form web for “Può WebView di Android ridimensionare automaticamente immagini enormi?”

    Sì, è ansible. È ansible provare a impostare il Layout WebView utilizzando il codice riportto di seguito. Ridimensiona tutte le immagini (più grande della Device Screen Width del Device Screen Width ) alla width dello schermo. Questo funziona per entrambi gli orientamenti (ritratto e paesaggio)

     webview.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); 

    È ansible aggiungere ulteriori margini / imbottiture in seguito per get la distanza corretta.

     webview.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); 

    funziona ma è deprecata . Questa è un'altra soluzione senza LayoutAlgorithm.SINGLE_COLUMN, utilizzando CSS:

     @SuppressLint("NewApi") private openWebView() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.TEXT_AUTOSIZING); } else { webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.NORMAL); } String data = "<div> your HTML content </div>"; webView.loadDataWithBaseURL("file:///android_asset/", getHtmlData(data), "text/html", "utf-8", null); } private String getHtmlData(String bodyHTML) { String head = "<head><style>img{max-width: 100%; width:auto; height: auto;}</style></head>"; return "<html>" + head + "<body>" + bodyHTML + "</body></html>"; } 

    È ansible che il browser ridisca l'image per adattarsi alla width massima dello schermo:

     <img src="huge-image.jpg" width="100%" /> 

    È ansible anche ridimensionare la sua altezza nella visualizzazione di WebView:

     <img src="huge-image.jpg" height="100%" /> 

    Tuttavia, ridimensionando sia la width che l'altezza, si otterrebbe un'image allungata. Per ridimensionare la width o l'altezza a seconda del lato più adatto, puoi considerare un po 'di JavaScript, come segue:

     <img src="huge-image.jpg" onload="resize(this);" /> <script type="text/javascript"> function resize(image) { var differenceHeight = document.body.clientHeight - image.clientHeight; var differenceWidth = document.body.clientWidth - image.clientWidth; if (differenceHeight < 0) differenceHeight = differenceHeight * -1; if (differenceWidth < 0) differenceWidth = differenceWidth * -1; if (differenceHeight > differenceWidth) { image.style['height'] = document.body.clientHeight + 'px'; } else { image.style['width'] = document.body.clientWidth + 'px'; } // Optional: remove margins or compensate for offset. image.style['margin'] = 0; document.body.style['margin'] = 0; } </script> 

    Potresti usare questo:

     WebView webView = (WebView) findViewById(R.id.myWebView); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true); 

    Trovato questa soluzione qui: Come impostare lo zoom iniziale / la width per una visualizzazione web

    Se la width WebView è fill_parent puoi utilizzare questo codice:

     Display display=getWindowManager().getDefaultDisplay(); int width=display.getWidth(); String data="<img src='http://example.com/image.jpg' style='width:"+width+"px' />"; webView.loadData(data, "text/html", "utf-8"); 

    E zoom ancora funzionante!

    Stesso metodo se l' height è fill_parent .

    I miei preferiti :

     String data = "<html><body ><img id=\"resizeImage\" src=\""+PictureURL+"\" width=\"100%\" alt=\"\" align=\"middle\" /></body></html>"; webview.loadData(data, "text/html; charset=UTF-8", null); 

    È ansible submit la dimensione desiderata nei parametri di richiesta e consentire al server di impostare la width / altezza nell'elemento img per te.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.