English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Metodo di caricamento delle pagine web e dei dati con il componente nativo WebView in Android

Nella descrizione dell'Api di questa classe, si dice sostanzialmente che è una vista che può visualizzare pagine web, come:

webView.loadUrl(http://www.baidu.com/);

Risultato di visualizzazione:

È possibile caricare anche alcune stringhe html, come:

String str = "<html><body>You scored <b>192</b> points.</body></html>";
webView.loadData(str, "text/html", null);

Risultato di visualizzazione:

Tramite questo componente è possibile visualizzare una pagina web nel tuo Activity o saltare al browser per visualizzare una pagina web. L'esempio superiore mostra come saltare al browser del telefono per visualizzare l'interfaccia di Baidu. Nella descrizione dei metodi di WebView inferiori utilizzeremo i metodi di WebView per limitare la visualizzazione delle pagine web all'interno dell'Activity corrente.

Ora mostriamo passo per passo l'uso di WebView.

Primo: caricare una pagina web

1. WebView viene utilizzato per visualizzare le pagine web e, durante l'uso, è necessario aggiungere sempre i permessi di rete

<uses-permission android:name="android.permission.INTERNET"/>

2. Aggiungi il tag WebView nel layout XML e istanzializzalo nell'Activity

<WebView
android:id="@+id/main_webview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
webView = (WebView) findViewById(R.id.main_webview);

3. Dopo di che possiamo caricare una pagina web utilizzando il metodo loadUrl di WebView

webView.loadUrl(http://www.baidu.com/);

4. Ma il sito web caricato in questo modo verrà reindirizzato al browser del telefono. Per limitare la visualizzazione delle pagine web all'Activity corrente, è necessario impostare il modello del browser su false
Aggiungi il codice seguente:

webView = (WebView) findViewById(R.id.main_webview);
// Imposta il client di WebView
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;// Restituisce false
}
});
webView.loadUrl("http://www.baidu.com/");

Effetto di visualizzazione:

In questo modo si carica semplicemente una pagina web.

WebView fornisce anche un'abstract class WebSettings per configurare alcuni contenuti di base delle pagine web visualizzate, che può essere istanziata tramite il metodo get dell'oggetto WebView

WebSettings webSettings = webView.getSettings();

Questa classe può configurare una serie di proprietà per la visualizzazione delle pagine web nel WebView

Per verificare se le proprietà sono applicate correttamente, ho cambiato il sito web visualizzato dal WebView, sostituendolo con l'indirizzo del nostro sito aziendale. Ecco lo stile della pagina web senza configurare una serie di proprietà: si può notare che l'interfaccia non si adatta bene allo schermo del telefono, offrendo una pessima esperienza utente

Successivamente, ho configurato una serie di proprietà per visualizzare le pagine web tramite la classe WebSettings

WebSettings webSettings = webView.getSettings();
// Permette a WebView di eseguire JavaScript
webSettings.setJavaScriptEnabled(true);
// Permettere a JavaScript di aprire automaticamente finestre
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
// Impostare la cache
webSettings.setAppCacheEnabled(true);
// Impostare il modello di cache, ci sono in totale quattro modelli
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
// Impostare il percorso della cache
// webSettings.setAppCachePath("");
// Supporta lo zoom (adatta al schermo corrente)
webSettings.setSupportZoom(true);
// Regolare le immagini a una dimensione adeguata
webSettings.setUseWideViewPort(true);
// Supporta la ristrutturazione del contenuto, ci sono in totale quattro metodi
// Il predefinito è NARROW_COLUMNS
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
// Impostare i controlli di ingrandimento visibili
webSettings.setDisplayZoomControls(true);
// Impostare la dimensione predefinita del carattere
webSettings.setDefaultFontSize(12);

Dopo aver configurato, guardiamo l'effetto di esecuzione:

Tutto il codice:

Elenco: è molto importante non dimenticare di aggiungere i permessi di rete

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.wu.webviewdemo">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

File di layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#000"
android:gravity="center"
android:paddingBottom="10dp"
android:paddingTop="10dp"
android:text="Utilizza WebView"
android:textAllCaps="false"
android:textColor="#fff" />
<WebView
android:id="@+id/main_webview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>

Activity

package com.wu.webviewdemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.main_webview);
// Imposta il client di WebView
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;// Restituisce false
}
});
WebSettings webSettings = webView.getSettings();
// Permette a WebView di eseguire JavaScript
webSettings.setJavaScriptEnabled(true);
// Permettere a JavaScript di aprire automaticamente finestre
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
// Impostare la cache
webSettings.setAppCacheEnabled(true);
// Impostare il modello di cache, ci sono in totale quattro modelli
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
// Impostare il percorso della cache
// webSettings.setAppCachePath("");
// Supporta lo zoom (adatta al schermo corrente)
webSettings.setSupportZoom(true);
// Regolare le immagini a una dimensione adeguata
webSettings.setUseWideViewPort(true);
// Supporta la ristrutturazione del contenuto, ci sono in totale quattro metodi
// Il predefinito è NARROW_COLUMNS
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
// Impostare i controlli di ingrandimento visibili
webSettings.setDisplayZoomControls(true);
// Impostare la dimensione predefinita del carattere
webSettings.setDefaultFontSize(12);
webView.loadUrl("http://www.lanou3g.com/");
}
}

Secondo, caricare la stringa HTML

In alcune applicazioni di sviluppo Android, ci si può imbattere in una situazione in cui la visualizzazione della pagina dettagliata non è solo testo semplice, né una semplice pagina web, ma dati html pronti forniti tramite un'interfaccia. In presenza di tali dati, il metodo che di solito adottiamo è caricare tramite WebView, il che utilizza un altro metodo di WebView

public void loadData(String data, String mimeType, String encoding)

1. Prima di tutto, guardiamo come è il stringa HTML, per rafforzare la persuasione e adattarsi alla realtà, non abbiamo creato noi stessi una stringa (come l'esempio iniziale) ma abbiamo rubato un pezzo di contenuto di una notizia di NetEase (notizia di Lao Guo e suo allievo, mi piace molto ascoltare le commedie di Ge Laoshi, dopo tutto, bere birra e stirare i capelli)

private String body = "<p>  <b>Articolo esclusivo di NetEase Entertainment del 7 settembre (di Xiao Yi)" +
"Oggi alle prime ore dell'alba, il mio discepolo He Xiaoxiao della generazione He ha pubblicato un post su Weibo per dimostrare la sua lealtà verso la De Yun, affermando di aver accettato incarichi privati all'esterno e di essere uscito dalla De Yun. " +
"per vergognarsi di non aver contattato il mio maestro Gao Degang e la mia suocera per due anni, avrei dovuto essere espulso dalla scuola, ma sono stato accolto con indulgenza dal mio maestro Gao Degang." +
"Successivamente, Gao Degang ha condiviso questo tweet con il testo 'Sapere sbagliare e migliorare è la cosa migliore'. Inoltre, riguardo agli scandali interni di Cao Yujin e He Yunwei contro Gao Degang, " +
"Le dispute tra Gao Degang e i suoi discepoli che dovrebbero essere terminate non potranno essere risolte completamente se continueranno così.</p><p>  <b>Testo originale di Han Xiaoxiao su Weibo: " +
"</b></p><p>  Nel 2006, sono stato ammesso al corso Hezi e chiamato He Xiaoxiao, il 13 giugno 2009 il mio maestro Gao Degang mi ha accolto come discepolo della famiglia Gao." +
"durante questi anni, ho mangiato, alloggiato e studiato nell'accademia De Yun, il mio maestro e la mia moglie non hanno preso un centesimo. Nel 2010, il mio maestro e la mia moglie mi hanno regalato una scatola di denaro e un anello nuziale per me e mia moglie, " +
"e ci ha fornito una casa da sposare nella base De Yun. Nel settembre 2014, per ragioni personali, sono andato all'estero per sviluppare. Dopo essere tornato a Pechino, mi sono sentito imbarazzato di affrontare il mio maestro, " +
"Non ho osato vedermi con il mio maestro per due anni. Dopo aver sviluppato a Shanghai, nel giugno 2016 durante la performance del mio maestro a Shanghai, ho finalmente osato riconoscere i miei errori al mio maestro, " +
"Il mio maestro ha mostrato una grande magnanimità e mi ha perdonato. Due mesi dopo il mio ritorno a Pechino, sono andato a casa per vedere la mia moglie e ho chiesto il suo perdono. Riguardo ai peccati commessi da He Xiaoxiao, " +
"Questo potrebbe portare a una 'pulizia della porta', durante la ricostruzione dell'albero genealogico della famiglia De Yun, grazie all'indulgenza del mio maestro, mi ha concesso di 'rimanere in osservazione', che è davvero un favore concesso al mio discepolo." +
"Il peccatore He Xiaodong è grato per l'insegnamento e l'affetto del suo maestro. Anche se He Xiaodong è a migliaia di miglia di distanza da Pechino, deciderò sempre di sentirmi legato a De Yun." +}
"Non oso dimenticare le sollecite istruzioni del mio maestro, fare arte con determinazione, vivere bene! Solo desidero che la salute del mio maestro e della mia maestra sia tranquilla! Il mio allievo He Xiaodong si inchina a distanza!"

2. Impostare l'encoding di caratteri predefinito, in Android viene utilizzato UTF-8

WebSettings webSettings = webView.getSettings();
webSettings.setDefaultTextEncodingName("UTF-8");

3. Successivamente, chiamare il metodo loadData di WebView

webView.loadData(body, "text/html; charset=UTF-8", null);

L'effetto di visualizzazione è il seguente:

Di seguito è tutto il codice, la布局continua ad utilizzare (caricamento della pagina web) parte del codice non ha cambiato molto, come segue:

package com.wu.webviewdemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends AppCompatActivity {
private WebView webView;
private String body = "<p>  <b>Articolo esclusivo di NetEase Entertainment del 7 settembre (di Xiao Yi)" +
"Oggi alle prime ore dell'alba, il mio discepolo He Xiaoxiao della generazione He ha pubblicato un post su Weibo per dimostrare la sua lealtà verso la De Yun, affermando di aver accettato incarichi privati all'esterno e di essere uscito dalla De Yun. " +
"per vergognarsi di non aver contattato il mio maestro Gao Degang e la mia suocera per due anni, avrei dovuto essere espulso dalla scuola, ma sono stato accolto con indulgenza dal mio maestro Gao Degang." +
"Successivamente, Gao Degang ha condiviso questo tweet con il testo 'Sapere sbagliare e migliorare è la cosa migliore'. Inoltre, riguardo agli scandali interni di Cao Yujin e He Yunwei contro Gao Degang, " +
"Le dispute tra Gao Degang e i suoi discepoli che dovrebbero essere terminate non potranno essere risolte completamente se continueranno così.</p><p>  <b>Testo originale di Han Xiaoxiao su Weibo: " +
"</b></p><p>  Nel 2006, sono stato ammesso al corso Hezi e chiamato He Xiaoxiao, il 13 giugno 2009 il mio maestro Gao Degang mi ha accolto come discepolo della famiglia Gao." +
"durante questi anni, ho mangiato, alloggiato e studiato nell'accademia De Yun, il mio maestro e la mia moglie non hanno preso un centesimo. Nel 2010, il mio maestro e la mia moglie mi hanno regalato una scatola di denaro e un anello nuziale per me e mia moglie, " +
"e ci ha fornito una casa da sposare nella base De Yun. Nel settembre 2014, per ragioni personali, sono andato all'estero per sviluppare. Dopo essere tornato a Pechino, mi sono sentito imbarazzato di affrontare il mio maestro, " +
"Non ho osato vedermi con il mio maestro per due anni. Dopo aver sviluppato a Shanghai, nel giugno 2016 durante la performance del mio maestro a Shanghai, ho finalmente osato riconoscere i miei errori al mio maestro, " +
"Il mio maestro ha mostrato una grande magnanimità e mi ha perdonato. Due mesi dopo il mio ritorno a Pechino, sono andato a casa per vedere la mia moglie e ho chiesto il suo perdono. Riguardo ai peccati commessi da He Xiaoxiao, " +
"Questo potrebbe portare a una 'pulizia della porta', durante la ricostruzione dell'albero genealogico della famiglia De Yun, grazie all'indulgenza del mio maestro, mi ha concesso di 'rimanere in osservazione', che è davvero un favore concesso al mio discepolo." +
"Il peccatore He Xiaodong è grato per l'insegnamento e l'affetto del suo maestro. Anche se He Xiaodong è a migliaia di miglia di distanza da Pechino, deciderò sempre di sentirmi legato a De Yun." +}
"Non oso dimenticare le sollecite istruzioni del mio maestro, fare arte con determinazione, vivere bene! Solo desidero che la salute del mio maestro e della mia maestra sia tranquilla! Il mio allievo He Xiaodong si inchina a distanza!"
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.main_webview);
WebSettings webSettings = webView.getSettings();
webSettings.setDefaultTextEncodingName("UTF-8");
webView.loadData(body, "text/html; charset=UTF-8", null);
}
}

Il seguente è il metodo che l'editor ha introdotto agli utenti Android per utilizzare i componenti nativi WebView per caricare pagine web e dati, sperando di essere utile a tutti. Se avete qualsiasi domanda, lasciate un messaggio, l'editor risponderà tempestivamente. In questo senso, l'editor desidera anche ringraziare vivamente tutti i sostenitori del sito web Yanao Jiaocheng!

Dichiarazione: il contenuto di questo articolo è stato tratto da Internet, il copyright spetta agli autori originali, il contenuto è stato contribuito autonomamente dagli utenti di Internet e caricato autonomamente, il sito web non possiede il diritto di proprietà, non è stato elaborato manualmente e non assume alcuna responsabilità legale correlata. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare un'e-mail a: notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare, fornendo prove pertinenti. Una volta verificata, il sito web eliminerà immediatamente il contenuto sospetto di violazione del copyright.

Ti potrebbe interessare